我有一个程序,。/ 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\.....
感谢。
答案 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[@]}