web-dev-qa-db-ja.com

1行に2つの変数を出力します

1行で変数に2つの出力が必要でした。シェルスクリプト#!/bin/shループを使用していますが、やりたいことはforの繰り返しで、次のようなものを出力します。

variable1_case1
variable2_case2

そして私はすでに試しました

variable$i_case$i.
2
for i in 1 2; do
  echo variable${i}_case$i
done

あなたがしたいことをする必要があります。 1 2を必要な数字または文字列に置き換えます。 $iの値によっては、echo variable"$i"_case"$i"のように引用する必要がある場合があります。

5
dessert

スクリプトの問題は、変数名をテキスト文字列内に直接埋め込み、変数名の一部になる可能性のある他の文字が後に続くようにすることだと思います。これらには、英数字だけでなく下線も含まれます。

そのため、スペースまたは非変数名の文字で他の変数と区別されないように変数を文字列に埋め込む場合は、代わりに中括弧で変数名表記を使用できます。

$ i=42
$ echo "variable${i}_case${i}."
variable42_case42.
4
Byte Commander

たぶん私はスティックの間違った端を手に入れましたが、このようなものが欲しいですか:

#!/bin/sh
while read a b; do
    echo variable:${a}_case:${b}
done

次の出力が作成されます。

/tmp/test.sh < /tmp/dat1 
variable:1_case:2
variable:3_case:4

データファイルdat1には以下が含まれます。

1 2
3 4
0
Stefan