カーネル2.6.xの使用
GNU bash、バージョン 4.3.42(1)-リリース(arm-openwrt-linux-gnu)
Bashスクリプトで次の変数を使用して次の結果を生成するforループを作成するにはどうすればよいですか?
command option option abc option 10
command option option def option 20
VAR1=“abc 定義”
VAR2="10 20"
$VAR1を繰り返すことはできますが、$VAR2を繰り返す方法がわかりません。
for i in $VAR1; do
command option option "$VAR1" option "$VAR2"
done
コマンドラインを2つの文字列に分割し、それぞれを繰り返してから接続する必要がありますか?
配列でcount変数を使用するのはどうですか?たとえば...
count=1
echo ${VAR1["$count"]}
whileループが機能したら、変数を計算できますか?
答え1
これはどうですか:
arr1=(abc def)
arr2=(10 20)
それから:
for (( i=0; i<${#arr1[@]}; i++ )); do echo "${arr1[i]} ${arr2[i]}"; done
abc 10
def 20
あなたの場合、echoステートメントは次のとおりです。
for (( i=0; i<${#arr1[@]}; i++ )); do
echo "command option option ${arr1[i]} option ${arr2[i]}"
done
command option option abc option 10
command option option def option 20
バラよりここたとえば、bashのCスタイルforループです。
答え2
以下を使用する方が簡単ですzsh
。
$ a=(a b c) b=(1 2 3)
$ for i j (${a:^b}) echo "i: $i, j: $j"
i: a, j: 1
i: b, j: 2
i: c, j: 3
${a:^b}
は配列圧縮演算子です(a
、、、、、、、上に展開されています)。1
b
2
c
3
$VAR1
POSIXに似たシェル(@maulinglawnsの答えの説明に基づいて使用されているように見えるbusybox)で、分割+glob演算子が適用される単語を繰り返す場合は、$VAR2
位置引数を使用できます。sh
VAR1='a b c'
VAR2='1 2 3'
set -- $VAR1
for j in $VAR2; do
echo "i: $1, j: $j"
shift
done