Я попробовал это, и это работает:
#!/bin/bash
read number
if [ "$number" != 1 -o "$number" != 2 ];then
echo not 1 or 2
fi
if [ "$number" == 1 -o "$number" == 2 ];then
echo 1 or 2
fi
exit
выход:
[~]$./test1.sh
2
not 1 or 2
1 or 2
в любом случае в соответствии с правом синтаксиса и первого выходного сообщения вы должны использовать это:
#!/bin/bash
read number
if [ "$number" -ne 1 ] && [ "$number" -ne 2 ];then
echo not 1 or 2
fi
if [ "$number" -eq 1 ] || [ "$number" -eq 2 ];then
echo 1 or 2
fi
exit
мощность:
[~]$./test1.sh
1
1 or 2
[~]$./test1.sh
2
1 or 2
[~]$./test1.sh
3
not 1 or 2
[~]$./test1.sh
4
not 1 or 2
С наилучшими пожеланиями Клаудио
Если не первый один быть '[ "$ число"! = 1 -a "$ число"! = 2]'? – user000001
Вы всегда должны указывать *, каким образом * он не работает. Какой результат вы ожидаете, какой результат вы получаете, и для чего это происходит? –
Спасибо, и извините за потраченное время, я должен был использовать -a вместо -o. Я получал вывод «не 1 или 2» независимо от того, какое значение имеет номер. – Darknifem