ファイルの内容をパラメータとしてbashスクリプトに渡す

ファイルの内容をパラメータとしてbashスクリプトに渡す

Bashスクリプトで次のことをしたいと思います。

script.sh < some_file

ファイルsome_fileには1行があり、これをbashにパラメータとして渡したいと思いますscript.sh。どうすればいいですか?

ベストアンサー1

3つのバリエーション:

  1. コマンドラインからファイルの内容を渡し、スクリプトで使用します。
  2. コマンドラインにファイル名を渡し、スクリプトのファイルから読み込みます。
  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。しかし、スクリプトユーザーにファイルやパイプから標準入力データを渡す際には、多くの柔軟性があります。

おすすめ記事