これは、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 arg3
arg1
は入力ファイルとして扱われません。
私は正しいですか?
問題は、なぜそれが開こうとしているの
かawk: cannot open summary (No such file or directory)
ということsummary
です。の次の単語$input_file
です。
この問題を解決するにはどうすればよいですか?