숫자를 바이트로 변환하는 스크립트에 문제가 있습니다.
- 숫자가 기가바이트 또는 테라바이트 단위로 충분히 크면 스크립트가 예상대로 실행됩니다.
- 숫자가 킬로바이트로 변환되면 스크립트를 실행하고 숫자를 킬로바이트 단위로 표시하며 오류 메시지를 보냅니다.
- 메가바이트 간격이면 오류 메시지가 전송됩니다.
라인 n ((: x > 1048576: 구문 오류: 잘못된 산술 연산자(""로 표시된 오류). x는 내가 입력한 숫자를 나타냅니다.
tb=1099511627776
gb=1073741824
mb=1048576
kb=1024
read number
if (( $number > $tb )); then
echo "$(( number / tb )) terabytes"
elif (( $number > $gb )) && (( $number < $tb )); then
echo "$(( number > gb )) gigabytes"
elif (( $number > $mb )) && (( $number < $gb )); then
echo "$(( number > mb )) megabytes"
elif (( $number > $kb )) && (( $number < $mb )); then
echo "$(( number > mb )) kilobytes"
fi
줄이 n
중간에 있어요 elif
.
답변1
이 줄에 오류가 있습니다: echo "$(( number > gb ) gigabytes"
누락).
해당 줄은 다음과 같아야 합니다.echo "$(( number > gb )) gigabytes"
답변2
@Cyrus에게 감사드립니다. shellcheck 검사기에서 문제를 발견했습니다. 분명히 ((와 $number 사이의 중간 elif에서 제거하고 일반 공백으로 만들어야 하는 잘림 방지 공백( )이 있는 것 같습니다. 어떻게 이런 일이 발생합니까?