変数に格納されている完全なコマンドライン引数(キーと値)を使用して、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