Linux shell将变量值传递给主程序

时间:2010-10-13 09:11:53

标签: linux bash shell

我有一个程序,。/ a我在shell中循环运行。

for((i=1 ; i<=30; i++)); do
 ./a arg1 5+i &//arg2 that I need to pass in which is the addition with the loop variables
done

我怎样才能传入带有循环变量的arg2?

另外,我有另一个程序是./b,我需要运行一次并接受所有5 + i参数。如果没有硬编码,我怎么能这样做呢。

./b arg1 6\
         7\
         8\ 
         9\.....

感谢。

4 个答案:

答案 0 :(得分:2)

使用您正在使用的相同(())执行添加,而使用“”进行连接:

for((i=1 ; i<=30; i++)); do
 let j=$((5+i))
 list="$list $j"
 ./a arg1 $j
done

./b $list

答案 1 :(得分:1)

这应该有效:

( for((i=5 ; i<=30; i++)); do ./a $((5+i)); echo $((5+i)); done ) | xargs ./b

答案 2 :(得分:1)

在当前的bash版本中,您可以使用{a..b}范围表示法。 E.g。

for i in {1..30}; do
  ./a arg1 $i
done

./b arg1 {6..35}

答案 3 :(得分:0)

对于你的第二部分,我会这样做

./b arg1 $(seq 6 35)

或者如果你真的需要在循环中添加

declare -a list
for n in $(seq 1 30) ; do
    list=("${list[@]}" $((5+n)))
done
./b arg1 ${list[@]}