运行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吗
我执行的结果如下
student date member no. grade age points maxname joined gained point available=======================================================================m.tansley 05/99 48211 green 8 40 44j.lulu 05/99 48317 green 9 24 26p.bunny 02/99 48 yellow 12 35 28j.troll 07/99 4842 brown-3 12 26 26l.tansley 05/99 4712 brown-2 12 30 28end-of-reportclub student total points :155average club student points :25.8333
[解决办法]
里面所有的符号和字母 必须是英文状态下输入的 别是中文模式
我复制你的代码只是把!/bin/awk -f 换成了#!/bin/awk -f 你的那个感叹号是中文模式下的感叹号
grade.txt 也是完全复制的你的
[解决办法]
我常用的模式是 user指用某用户来执行 我常用root
* * * * * user /path/程序 > /path/log 2>&1