shell 下编程时遇到的问题

发布于 2022-10-01 10:10:07 字数 197 浏览 14 评论 0

本人使用的是REDHAT LINUX 9 PERSONAL,当在shell下运行单个命令时,一起正常,但是如果创建脚本来运行时,总是显示:command not found,无论是创建 sed,awk等等,均如此,即使在脚本的第一行,即: #!/bin/awk ,无论怎么更改路径也没用(根据whereis name,所查的几个路径)
请问这个问题应如何解决?希望能得到帮助,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

话少情深 2022-10-08 10:10:07

运行脚本的时候是否切换了用户?
总感觉还是路径的问题。
#!/bin/awk是否是个awk脚本,需要awk调用?

风柔一江水 2022-10-08 10:10:07

没有切换用户,我一直是使用 root 用户名登陆的。需要awk调用。

甜宝宝 2022-10-08 10:10:07

[quote]原帖由 "jshen1971"]本人使用的是REDHAT LINUX 9 PERSONAL,当在shell下运行单个命令时,一起正常,但是如果创建脚本来运行时,总是显示:command not found,无论是创建 sed,awk等等,均如此,即使在脚本的第一行,即: #!/bin/awk ,?.........[/quote 发表:

#!/bin/xxx
的使用是为了保证此脚本在其他Unix系统下便于修改,以获得兼容?

你是怎么运行命令的?
#your-command
还是
#./your-command   
#../your-command

逆流 2022-10-08 10:10:07

都试过了,都不行

·深蓝 2022-10-08 10:10:07

把你的脚本贴出来看看行么?

我不吻晚风 2022-10-08 10:10:07

例如有如下一个grade.txt文件:
M.Tansley   05/99    48311   Green    8    40    44
J.Lulu      06/99    48317   green    9    24    26
P.Bunny     02/99    48      Yellow   12   35    28
J.Troll     07/99    4842    Brown-3  12   26    26
L.Tansley   05/99    4712    Brown-2  12   30    28
其中$1:名字;$2:升段日期;$3:学生序号;$4:腰带级别;$5:年龄;$6:目前比赛积分;$7:比赛最高分。现创建一个student_tot.awk脚本,结果是要将学生级别相加,即tot+=$6),文本如下:
#!/bin/awk -f
# all comment lines must start with a hash '#'
# name:student_tot.awk
# to call:student_tot.awk grade.txt
# print total and average of club student points
# print a header first
BEGIN{
print "Student  Date    Member NO.  Grade   Age    Points    Max"
print "Name     Joined                                 Gained  Point    Available"
print "========================================================================="

}
# let's add the scores of points gained
(tot+=$6)

# finished processing now let's print the total and average point
END{print "Club student total points :" tot
  print "Average Club Student points:" tot/NR}

执行时,首先对脚本文件加入了可执行权限 chmod u+x student_tot.awk
然后执行:student_tot.awk grade.txt
结果显示:bash: student_tot.awk: command not found
开始以为是路径不对,随后用 whereis awk 命令,得到下面几个路径:
/bin/awk
/usr/bin/awk
/usr/libexec/awk
/usr/share/awk
/usr/share/man/man1/awk.1.gz
但在更改了路径后,依然显示:command not found
随后在使用 sed,sh 等时,发现都是如此,请问这到底是怎么回事?应该怎么去解决?否则的话,我就只能在 shell 下使用命令来操作,而无法利用创建脚本来执行,极不方便.
另外还想请教一下:
1.在 UNIX/Linux 下的几种编程语言中,一般常用的是哪几种?因为在菜单里有很多中,不知道应选哪种.
2.在众多的报刊杂志中,有没有专门面向 UNIX/Linux 报刊杂志?

友谊不毕业 2022-10-08 10:10:07

Please try ./student_tot.awk grade.txt . Maybe Command not found means can not find student_tot.awk. or try "awk student_tot.awk grade.txt".

像极了他 2022-10-08 10:10:07

你当前工作目录在哪?

登录身份?

你的.bash里PATH中有没有如/bin/awk?

你好像在用bash来执行awk脚本,   ./awk yourcommand

倾城月光淡如水﹏ 2022-10-08 10:10:07

第一行该是"#!/bin/bash"吧?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文