0

私は小さなbashスクリプトを書いていて、これによってディレクトリを作成しようとしています。

mkdir ~/deploy.$1

私はそれがdeploy.scriptFooまたは$1の価値があるものを生成するはずだと思います。

「デプロイ」を生成するだけです。$1変数を省略します。出力で$1変数をテストしましたが、スクリプトに渡されていることを確認しています。何か案は?

4

1 に答える 1

0

問題

$1 位置パラメーターは、スクリプト自体の名前ではなく、スクリプトの最初の引数です。

ソリューション

スクリプト名が必要な場合は、$0 を使用します。たとえば、次のサンプル スクリプトが /tmp/param_test.sh に保存されているとします。

#!/bin/bash
mkdir "/tmp/deploy.$(basename "$0" .sh)"
ls -d /tmp/deploy*

スクリプトは引数を無視しますが、次の出力を正しく返します。

/tmp/deploy.param_test

名前を変更したい場合は、スクリプトで位置パラメータを使用し、引数を指定してスクリプト呼び出す必要があります。例えば:

#!/bin/bash
mkdir "/tmp/deploy.$1"
ls -d /tmp/deploy*

コマンド ラインで、引数をスクリプトに渡します。例えば:

$ bash /tmp/param_test.sh foo
/tmp/deploy.foo

関連項目

http://www.gnu.org/software/bash/manual/bashref.html#Positional-Parameters

于 2012-06-24T22:07:34.293 に答える