簡體   English   中英

Linux shell將變量值傳遞給主程序

[英]Linux shell passing variable values to main programme

我有一個程序,。/ 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\.....

謝謝。

使用您已經使用的相同(())執行添加,而使用“”進行連接:

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

./b $list

這應該工作:

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

在當前的bash版本中,您可以使用{a..b}范圍表示法。 例如

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

./b arg1 {6..35}

對於你的第二部分,我會這樣做

./b arg1 $(seq 6 35)

或者如果你真的需要在一個循環中添加

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM