0

bash スクリプトを使用して他のスクリプトを呼び出したい

#!/bin/bash
./anotherScript $1 $2
./anotherScript $3 $4
#and so on

渡される変数の数がわからないので、変数 'i' を使用して 0 から $# まで実行し、引数として ${$i} を取得しようとしています。ただし、Bash では不適切な置換エラーが発生します。私は次のことを試しました:

a=1
echo $a
echo ${$a} #doesn't work
echo ${${a}} #doesn't work

それらのどれも機能しません。${$a} が ${1} に評価されることを期待しています。これにより、最初の引数が得られます。man ページと、Linux Documentation Project サイトの bash スクリプト ガイドを調べました。

私は何を間違っていますか?

4

3 に答える 3

4

bash を使用すると、以下を使用して間接参照を行うことができます!

echo ${!a}
于 2013-07-18T22:19:00.713 に答える
2

それを行う別の方法:

while [ $# -gt 0 ]
do
    ./anotherscript $1 $2
    shift 2
done

それを調整して、奇数の引数で何が起こるかを決定できます。

于 2013-07-19T09:06:08.343 に答える
1

私はウィリアム・パーセルに賛成票を投じました。これを行う別の方法は、配列に値を代入することです (相対値は 0 になります)。

list=("$@")
a=0
echo ${list[a]}
a=1
echo ${list[a]}
于 2013-07-18T22:22:00.773 に答える