![다른 스크립트에서 실행될 때 bash 카운터 스크립트가 제대로 작동하도록 하려면 어떻게 해야 합니까? [복사]](https://linux55.com/image/146689/%EB%8B%A4%EB%A5%B8%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%EB%90%A0%20%EB%95%8C%20bash%20%EC%B9%B4%EC%9A%B4%ED%84%B0%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EA%B0%80%20%EC%A0%9C%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EB%8F%84%EB%A1%9D%20%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
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그러한 문제를 피하기 위해.