私はシェルスクリプトを作成しましたが、スクリプトに引数として渡された各ファイルの行数を印刷するループを実行する方法がわかりません。出力は次のとおりです。
2 lines in hello.sh
33 lines in /var/log/syslog
ベストアンサー1
POSIXシェルを想定すると、ここでコマンドライン引数を含むfor
ループを使用してループを実行する必要があります。"$@"
for filename in "$@"; do
lines=$(wc -l < "$filename")
printf '%u lines in %s\n' "$lines" "$filename"
done
すべての引用符を使用することは非常に重要です。スペースやその他の文字を含むファイル名を渡すことができます。
./my_script.sh /var/log/syslog "$HOME/My Dir with Spaces/a file with spaces.txt"