shell 下编程时遇到的问题
本人使用的是REDHAT LINUX 9 PERSONAL,当在shell下运行单个命令时,一起正常,但是如果创建脚本来运行时,总是显示:command not found,无论是创建 sed,awk等等,均如此,即使在脚本的第一行,即: #!/bin/awk ,无论怎么更改路径也没用(根据whereis name,所查的几个路径)
请问这个问题应如何解决?希望能得到帮助,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(9)
运行脚本的时候是否切换了用户?
总感觉还是路径的问题。
#!/bin/awk是否是个awk脚本,需要awk调用?
没有切换用户,我一直是使用 root 用户名登陆的。需要awk调用。
[quote]原帖由 "jshen1971"]本人使用的是REDHAT LINUX 9 PERSONAL,当在shell下运行单个命令时,一起正常,但是如果创建脚本来运行时,总是显示:command not found,无论是创建 sed,awk等等,均如此,即使在脚本的第一行,即: #!/bin/awk ,?.........[/quote 发表:
#!/bin/xxx
的使用是为了保证此脚本在其他Unix系统下便于修改,以获得兼容?
你是怎么运行命令的?
#your-command
还是
#./your-command
#../your-command
都试过了,都不行
把你的脚本贴出来看看行么?
例如有如下一个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 报刊杂志?
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".
你当前工作目录在哪?
登录身份?
你的.bash里PATH中有没有如/bin/awk?
你好像在用bash来执行awk脚本, ./awk yourcommand
第一行该是"#!/bin/bash"吧?