私はいくつかの入力ファイルを含むスクリプトを持っています。通常、これらは標準の場所に保存され、スクリプトによって呼び出されるデフォルトです。
ただし、入力を変更して実行する必要がある場合があります。
スクリプトには、たとえば、$ A $ B、$ Cという3つの変数があります。ここで、デフォルト以外の$ Bで実行したいと思います。明日は、デフォルト以外の$ Aと$ Bで実行したい場合があります。
コマンドライン引数を解析する方法を見回しました:
Bashでコマンドライン引数を解析するにはどうすればよいですか?
コマンドライン引数によって設定される場合があるのに、どうやって対処するのですか?
私自身の質問に答えるのに十分な評判ポイントがありません。しかし、私には解決策があります:
#!/bin/bash
a=input1
b=input2
c=input3
while getopts "a:b:c:" flag
do
case $flag in
a) a=$OPTARG;;
b) b=$OPTARG;;
c) c=$OPTARG;;
esac
done
次の方法で行うことができます。 Bash manページのShell Parameter Expansionを参照してください。
#! /bin/bash
value=${1:-the default value}
echo value=$value
コマンドラインで:
$ ./myscript.sh
value=the default value
$ ./myscript.sh foobar
value=foobar
コマンドライン引数を使用してデフォルト値を上書きする代わりに、スクリプトの外部で変数を設定することもできます。たとえば、次のスクリプトはfoo=54 /tmp/foobar
またはbar=/var/tmp /tmp/foobar
で呼び出すことができます。
#! /bin/bash
: ${foo:=42}
: ${bar:=/tmp}
echo "foo=$foo bar=$bar"