1
이 코드는 아무런 오류도 나타내지 않지만 카운터 ++를 사용하면 첫 번째 반복이 실패합니다.왜 카운터 (카운터 ++)는 카운터 == 0 일 때 실패합니까?
[email protected]:~$ bash -x test.sh
+ parameters='one two three'
+ counter=0
+ for option in '$parameters'
+ eval one=
++ one=
+ ((counter++))
+ echo one 1
one 1
+ for option in '$parameters'
+ eval two=
++ two=
+ ((counter++))
+ echo two 0
two 0
+ for option in '$parameters'
+ eval three=
++ three=
+ ((counter++))
+ echo three 0
three 0
[email protected]:~$ vi test.sh
[email protected]:~$ bash -x test.sh
+ parameters='one two three'
+ counter=0
+ for option in '$parameters'
+ eval one=
++ one=
+ ((counter=counter+1))
+ echo one 0
one 0
+ for option in '$parameters'
+ eval two=
++ two=
+ ((counter=counter+1))
+ echo two 0
two 0
+ for option in '$parameters'
+ eval three=
++ three=
+ ((counter=counter+1))
+ echo three 0
three 0
내가 그만큼이 문제를 이해할 누구든 그것을 설명 생각하지만, 나는 위해 더 많은 텍스트를 추가해야하기 때문에 내가 이것을 쓰고이 제출 : 여기
parameters="one two three"
counter=0
for option in $parameters
do
eval $option=${args[$counter]}
((counter = counter + 1)) # If you do ((counter++)) it fails the first iteration, weird.
echo $option $?
done
무슨 뜻인지입니다 선.
아니,하지만 첫 번째 반복은'당신의 스크립트를 설정하면 -e' 설정하고 '나는 할, 그들은 중지처럼 -o pipefail'를 설정하는 것이 의미 종료 한 코드를 제공합니다 달리는. 그 외에는 모두 좋다. – Ulukai
여기에 인수 목록을 반복하는 많은 나쁜 습관이 있습니다. 'eval'을 사용하고 for-loop 변수 내용을 사용합니다. – Inian
일련의 매개 변수를 반복해야하고 매개 변수에 제공된 인수에서 값을 할당해야하므로 평가 및 반복의 특정 순서가 필요합니다. for 루프. 특정 세부 사항에 대한 답변을 원했기 때문에 모든 세부 사항을 제공하고 싶지는 않았지만이 일을 더 잘 수행하는 방법을 알고 있다면이 질문의 범위를 벗어난 경우에도 항상 더 나은 방법을 배우는 데 열중합니다.) – Ulukai