変数に格納されたコマンドライン引数を使用してBashスクリプトからプログラムを呼び出す

変数に格納されたコマンドライン引数を使用してBashスクリプトからプログラムを呼び出す

変数に格納されている完全なコマンドライン引数(キーと値)を使用して、Bashスクリプトから特定のプログラムを呼び出すことはできますか?

scanimage私のスクリプトでは、次の呼び出しを使用します。

scanimage -p --mode "True Gray" --resolution 150 -l 0 -t 0 -x 210 -y 297 --format=png  -o scan.png

いくつかのパラメータを変数に保存したいと思います。--modeスイッチに関してこれを試しました。

options="--mode \"True Gray\""
scanimage -p $options --resolution 150 -l 0 -t 0 -x 210 -y 297 --format=png  -o scan.png

しかし、これはうまくいかないとscanimage言います。

scanimage: setting of option --mode failed (Invalid argument)

スイッチ値を保存するだけでも--mode機能します。

mode="True Gray"
scanimage -p --mode "$mode" --resolution 150 -l 0 -t 0 -x 210 -y 297 --format=png  -o scan.png

しかし、スイッチを変更したいのですが、どのスイッチが設定されているのかわからずに複数のスイッチをカスタマイズしたいと思います。

それでは、コマンドラインオプションの値を変数に保存するだけでなく、オプションスイッチも値とともに保存できますか?

ベストアンサー1

文字列の代わりに配列を使用すると、これを行うことができます。この試み:

options=( '--mode' "True Gray" )
scanimage -p "${options[@]}" --resolution 150 -l 0 -t 0 -x 210 -y 297 --format=png  -o scan.png

おすすめ記事