como selecionar saída múltipla

como selecionar saída múltipla

Sou novo em scripts bash e não entendo o que há de errado com essa parte específica do meu script. estou tentando selecionar todas as saídas que tenho no meu script. e tentando colocar em condições que se todas essas condições não forem atendidas, então não é válido e então é válido.

if [[ `echo $?` -ne {0..4} ]]
then
         echo "Its a Valid Date."
 else
         echo " Not valid date."
fi

Quando eu executo, recebo:

kpatel138@matrix:~/Lab2> ./cal2 1994 5 4
./cal2: line 40: unexpected argument `(' to conditional binary operator
./cal2: line 40: syntax error near `(0'
./cal2: line 40: `if [[ `echo $?` -ne (0..4) ]]'

Responder1

`echo $?`é uma maneira complicada de escrever $?. Não faça as coisas de maneira complicada quando existe uma maneira mais simples e óbvia.

Acho que você deseja testar se $?um dos valores é 0, 1, 2, 3 ou 4. A sintaxe que você está usando não faz sentido. Você pode testar todos os cinco casos de igualdade:

if [[ $? -eq 0 || $? -eq 1 || $? -eq 2 || $? -eq 3 || $? -eq 4 ]]; then …

Mas isso é excessivamente detalhado. Como você deseja permitir o intervalo de 0 a 4, teste se $?é maior que o valor mínimo e menor que o valor máximo.

if [[ $? -ge 0 && $? -le 4 ]]; then …

$?nunca é negativo, então o teste $? -ge 0é supérfluo. Por isso:

if [[ $? -le 4 ]]; then …

Isso também pode ser escrito usando uma expressão aritmética. Observe que o operador é diferente: construções condicionais entre colchetes usam -eq, -ne, -le, -gee para comparar números inteiros, enquanto -ltexpressões -gtaritméticas têm uma sintaxe semelhante a C.

if (($? <= 4)); then …

informação relacionada