これは、stdin からのユーザーからの入力として文字列を受け取る私のシェル スクリプトです。
#!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。そうじゃない?
$input_fileに存在するものに基づいて、summary.awk が動作するようにし$queryます。
私の理解は次のとおりです。
渡された最初のコマンド ライン引数は、入力ファイルとして扱われます。例:
awk 'code' file arg1 arg2 arg3のみfileが入力ファイルとして扱われます入力ファイルがパイプ処理されている場合、どの引数も入力ファイルとして認識されません。例:
cat file | awk 'code' arg1 arg2 arg3arg1は入力ファイルとして扱われません。
私は正しいですか?
問題は、なぜそれが開こうとしているの
かawk: cannot open summary (No such file or directory)
ということsummaryです。の次の単語$input_fileです。
この問題を解決するにはどうすればよいですか?