Bashスクリプトで次のことをしたいと思います。
script.sh < some_file
ファイルsome_file
には1行があり、これをbashにパラメータとして渡したいと思いますscript.sh
。どうすればいいですか?
ベストアンサー1
3つのバリエーション:
- コマンドラインからファイルの内容を渡し、スクリプトで使用します。
- コマンドラインにファイル名を渡し、スクリプトのファイルから読み込みます。
- ファイルの内容を標準入力に渡し、スクリプトから標準入力を読み込みます。
内容をコマンドライン引数として渡します。
$ ./script.sh "$(<some_file)"
スクリプト内部:
some_data=$1
$1
最初のコマンドライン引数の値になります。
データが多すぎると失敗します(シェルが実行する必要があるコマンドが大きすぎます)。
パスファイル名:
$ ./script.sh some_file
スクリプト内部:
some_data=$(<"$1")
または
IFS= read -r some_data <"$1"
標準入力をファイルにリンクします。
$ ./script.sh <some_file
スクリプト内部:
IFS= read -r some_data
このアプローチの欠点は、スクリプトの標準入力がに接続されることですsome_file
。しかし、スクリプトユーザーにファイルやパイプから標準入力データを渡す際には、多くの柔軟性があります。