SO과 관련 있습니다.Bash는 부울 값에 관계없이 항상 동일한 값을 인쇄합니다.
fizzy.sh :
#!/usr/bin/env sh
div3() {
expr $1 % 3 = 0
}
div5() {
expr $1 % 5 = 0
}
fizzy() {
if [ $(div3 $1) ] && [ $(div5 $1) ]; then
expr "FizzBuzz"
elif [ $(div3 $1) ]; then
expr "Fizz"
elif [ $(div5 $1) ]; then
expr "Buzz"
else
expr "$1"
fi
}
echo $(fizzy 1)
echo $(fizzy 2)
echo $(fizzy 3)
예 : $1 % 3
의 결과가 제로 또는 아니지만, if
true로 취급 0인지의 여부에 따라
$ ./fizzy.sh
FizzBuzz
FizzBuzz
FizzBuzz
에서 모든 것을 할 수 있던'경우 [0]; ... '시험은 당신이 생각하는대로하지 않습니다. 'if [1]'또는'if [cow]'또는 비어 있지 않은 문자열을 사용하면 같은 결과를 얻습니다. 이것은 당신이 원하는 것을 보여줄 것입니다 :'if $ (exit 0); 다음 에코 Y; else echo N; 다시 0으로 테스트하십시오. –