다른 스크립트에서 실행될 때 bash 카운터 스크립트가 제대로 작동하도록 하려면 어떻게 해야 합니까? [복사]

다른 스크립트에서 실행될 때 bash 카운터 스크립트가 제대로 작동하도록 하려면 어떻게 해야 합니까? [복사]

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그러한 문제를 피하기 위해.

관련 정보