.bashrc에서 for 또는 while 루프 별칭 사용

.bashrc에서 for 또는 while 루프 별칭 사용

.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

관련 정보