wget을 사용하고 증분 변수라는 파일에 출력을 저장하는 스크립트가 있습니다.
카운터.sh:
number=1
for i in $(cat file)
do
wget $i -S -O $number.html 2>&1
((number++))
sleep 1
echo 'done'
done
명령줄에서 스크립트를 실행할 수 있으며 정상적으로 실행됩니다. 그러나 다른 스크립트에서 실행하면 다음과 같습니다.
스크립트 2:
./counter.sh
다음과 같은 결과가 나타납니다.
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
scripts/counter.sh: 5: scripts/counter.sh: number++: not found
done
어떤 이유로 다른 스크립트 내에서 실행되면 Counter++가 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있나요?
답변1
number++
쉘이 변수 에 대해 산술 연산을 수행하는 대신 변수에 대해 연산을 시도하는 것 같습니다 number
. 이는 ++
쉘이 이 구문을 지원하지 않기 때문일 수 있습니다 .
이 문제를 해결하려면 스크립트를 실행할 셸을 지정할 수 있습니다. 이렇게 하려면 다음을 추가하세요.
#!/bin/bash
스크립트의 첫 번째 줄로.
답변2
사용
#!/bin/bash
또는
bash counter.sh
아니면 호환되도록 하세요.
#!/bin/sh
일반적으로 IDE를 사용하거나 코드를https://www.shellcheck.net그러한 문제를 피하기 위해.