Estou tentando fazer uma verificação simples da condição, mas parece não funcionar.
Se $#
for igual 0
ou superior a, 1
então diga olá.
Eu tentei a seguinte sintaxe sem êxito:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
bash
unix
if-statement
sh
morango
fonte
fonte
>
é o redirecionamento de saída em sh / bash. Agora você provavelmente tem um arquivo chamado1
.Respostas:
Isso deve funcionar:
Não tenho certeza se isso é diferente em outros shells, mas se você deseja usar <,>, é necessário colocá-los entre parênteses duplos da seguinte forma:
fonte
Este código funciona para mim:
Eu não acho que sh suporte "==". Use "=" para comparar strings e -eq para comparar ints.
para mais detalhes.
fonte
-gt
maior que. Ou apenas substitua tudo por[ $# -ne 1 ]
.Se você estiver usando o status do código de saída do bash $? como variável, é melhor fazer isso:
Porque se você fizer:
A parte esquerda do OR altera o $? variável, para que a parte correta do OR não tenha o $ original ? valor.
fonte
Às vezes, você precisa usar colchetes duplos, caso contrário, você recebe um erro como muitos argumentos
fonte
Se um script bash
fonte
você já tentou algo assim:
fonte
echo
um alô mesmo quando tenho um único argumento.$#
pode ser o valor de retorno do primeiro teste?No Manual de Referência do Bash → 3.4.2 Parâmetros especiais
Portanto,
$#
sempre será 0 ou um número inteiro maior.Portanto, se você deseja fazer algo sempre
$#
que 0 ou maior que 1, basta verificar se$#
é ou não1
:Isso usa a sintaxe:
fonte
[[ -n $A ]] && echo 1 || echo 2
E no Bash
OU no Bash
fonte