日期:2014-05-16  浏览次数:21131 次

运行awk脚本文件碰到:-bash:student_tot.awk:command not found
刚开始学习Linux,跟着资料学习一些命令语法的,结果运行碰到问题,希望大家帮助
首先我创建了一个grade.txt文件,文本如下:
# cat grade.txt
m.tansley 05/99 48211 green 8 40 44
j.lulu 05/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
end-of-report

然后创建新文件student_tot.awk,文本如下:
!/bin/awk -f
# all comment lines must start with a hash '#'
# name: student_tot.awk
# to call: student_tot.awk grade.txt
# prints 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
通过wheris awk查看路径:
#whereis awk
awk:/bin/awk /usr/bin/awk /usr/libexec/awk /usr/share/awk /usr/share/man/man1/awk.1.gz /usr/share/man/man1p/awk.1p.gz
我也使用了awk student_tot.awk grade.txt,结果显示:
awk: student_tot.awk
awk: ^syntax error
希望大家能帮我找出原因,更希望能指导我如何学习Linux。谢谢


------解决方案--------------------

student_tot.awk grade.txt 这样执行不对 这样执行会去环境变量PATH里去找student_tot.awk 而你当前目录肯定没在环境变量PATH里
这样执行./student_tot.awk grade.txt 或者全路径/path/student_tot.awk grade.txt
或者把当前目录追加到环境变量PATH

------解决方案--------------------
脚本的第一句!/bin/awk -f 也不对 改成
#!/bin/awk -f
------解决方案--------------------
你到底是如何执行的哦 你的awk路径是/bin/awk吗
我执行的结果如下
C# code

student date member no. grade age points max
name joined gained point available
=======================================================================
m.tansley 05/99 48211 green 8 40 44
j.lulu 05/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
end-of-report
club student total points :155
average club student points :25.8333

------解决方案--------------------
里面所有的符号和字母 必须是英文状态下输入的 别是中文模式
我复制你的代码只是把!/bin/awk -f 换成了#!/bin/awk -f 你的那个感叹号是中文模式下的感叹号
grade.txt 也是完全复制的你的

------解决方案--------------------
我常用的模式是 user指用某用户来执行 我常用root
* * * * * user /path/程序 > /path/log 2>&1