2つのスクリプトがあります。 s1.shとs2.shだとしましょう。
s1のコードは次のとおりです。
step = 0
.
.(omitted)
.
if [ $step -eq 19 ]; then
./s2.sh
s2のコードは次のとおりです。
step=0
.
. (many codes here, but omitted)
.
if [ $step -eq 18 ]; then
print "hello"
ステップ19からs1を実行し、s1がs2を呼び出すので、s2もステップ19に直接移動したいと思います。
以前に人々がこれについて話していることを聞いたことがありますが、具体的な方法は覚えていません。これを行うコマンドコードは次のとおりです。
./s1.sh --step 19 [some code?]--step 18
上記の2つのスクリプトに引数を渡すためのコマンドラインを書く方法を知っていますか?
答え1
step
両方を同じにするには、export step
s1で実行します。これにより、step
変数を呼び出すときに明示的に渡さなくても変数がs2に表示されます。
step
s2にs1と異なる値を設定するには、step=whatever
s2を呼び出す前にその値を追加してください。たとえば、s2から8を作成するには、次の手順を実行しますstep=8 ./s2.sh
。
答え2
この結果を得る1つの方法は、位置パラメータを使用することです。
これはtest1.shスクリプトです:
#!/bin/bash
step=$1
step2=$2
if [[ step -eq 19 ]]; then
./test2.sh $step2
fi
とtest2.shスクリプト:
#!/bin/bash
step=$1
if [[ step -eq 18 ]]; then
echo "success - step 18 executed"
fi
その後、test1.sh(あなたの場合はs1.sh)を次のように呼び出すことができます。
./test1.sh 19 18
これで成功メッセージが届きます。これを行うには、元のスクリプトをいくつか編集する必要がありますが、多くの柔軟性を提供し、両方のスクリプトをはるかに簡単に拡張できます。このアプローチを使用することにした場合は、ステップ変数と2段階変数のデフォルト値を設定することをお勧めします。