这是我的 shell 脚本,它从标准输入接收一个字符串作为用户的输入。
#!bin/sh
printf "Enter your query\n"
read query
cmd=`echo $query | cut -f 1 -d " "`
input_file=`echo $query | cut -f 2 -d " "`
printf $input_file
if [ $input_file = "" ]
then
printf "No input file specified\n"
exit
fi
if [ $cmd = "summary" ]
then
awk -f summary.awk $input_file $query
fi
假设他进入
summary a.txt /o foo.txt
现在cmd
变量将取值summary
并将input_file
取a.txt
. 不是吗?
我希望 summary.awk$input_file
根据$query
.
我的理解如下:
传递的第一个命令行参数被视为输入文件。eg :
awk 'code' file arg1 arg2 arg3
onlyfile
被视为输入文件如果输入文件是通过管道传输的,它不会将任何参数视为输入文件。例如:
cat file | awk 'code' arg1 arg2 arg3
arg1
不被视为输入文件。
我对吗?
问题是
我明白awk: cannot open summary (No such file or directory)
为什么它试图打开summary
?它是 之后的下一个词$input_file
。
我该如何解决这个问题?