.bashrcファイルに入れたエイリアスに似たパターンがある場合、またはループを使用できますかfor
?while
たとえば、次のようになります。
alias c0='ssh computer-1-0'
alias c1='ssh computer-1-1'
alias c2='ssh computer-1-2'
alias c3='ssh computer-1-3'
alias c4='ssh computer-1-4'
しかし、私は次のことをしたいです。
i=0
while [ i -le 4 ]
do
alias "c$i"="ssh computer-1-$i"
i=`expr $i + 1`
done
残念ながら、これは機能しません。エラーメッセージが表示されます-bash: [: i: integer expression expected
。
私の願いを叶える方法はありませんか?
答え1
あなたは前にいた非常に閉鎖:
i=0
while [ $i -le 4 ]; do
alias "c$i"="ssh computer-1-$i"
i=`expr $i + 1`
done
whileループ内に文字を追加するだけです$
。i
答え2
直面している即時の問題は、これが単一i
の文字列であるということです。変数値にアクセスするには、i
変数値にアクセスするための構文を使用する必要があります"$i"
。
while [ "$i" -le 4 ]
(ここでは二重引用符を省略できますが、使用することをお勧めします。)
基本的な算術はシェルに組み込まれています。このexpr
ユーティリティはまだ組み込まれていない過去の遺物です。書くことができます
i=0
while [ "$i" -le 4 ]
do
alias "c$i=ssh computer-1-$i"
i=$((i + 1))
done
二重括弧内のドルは必要なく、使用しないでください。算術式では、変数名は変数の値に展開されます。
BashにはCに似たforループ構文があります。これはbash起動ファイルなので、bash関連の構文を使用しない理由はありません。
for ((i = 0; i <= 4; i++)); do
alias "c$i=ssh computer-1-$i"
done