.bashrcでforまたはwhileループエイリアスを使用する

.bashrcでforまたはwhileループエイリアスを使用する

.bashrcファイルに入れたエイリアスに似たパターンがある場合、またはループを使用できますかforwhileたとえば、次のようになります。

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

関連情報