Linuxでスクリプトをリダイレクトするためのパラメータ渡し

Linuxでスクリプトをリダイレクトするためのパラメータ渡し

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 steps1で実行します。これにより、step変数を呼び出すときに明示的に渡さなくても変数がs2に表示されます。

steps2にs1と異なる値を設定するには、step=whatevers2を呼び出す前にその値を追加してください。たとえば、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段階変数のデフォルト値を設定することをお勧めします。

関連情報