-GT: script de shell esperado do operador unário -- and-line campo com bash camp askubuntu Relacionado O problema

-gt: unary operator expected shell script


1
vote

problema

português

Obtendo este erro após os pacotes de atualização no Ubuntu.

  #!/bin/bash used=$(df -H | grep  'rootfs' | cut -d "G" -f 4 | cut -d "%" -f 1) limit=90 if [ $used -gt $limit ]; then Or [ "$used" -gt "$limit" ] Or [ "$used" -ge 90 ] #delete file and mail command; fi    

erro

.

[: -gt: operador unário esperado

english

Getting this error after the upgrade packages in ubuntu.

#!/bin/bash used=$(df -H | grep  'rootfs' | cut -d "G" -f 4 | cut -d "%" -f 1) limit=90 if [ $used -gt $limit ]; then Or [ "$used" -gt "$limit" ] Or [ "$used" -ge 90 ] #delete file and mail command; fi 

Error

[: -gt: unary operator expected

     

Lista de respostas

5
 
vote

A variável used está vazio, levando à mensagem de erro em relação ao operador unário. Possível razão pode ser que não haja rootfs em df -H saída i.e. no seu sistema.

  $ foo= $ [ $foo -gt 10 ] && echo OK bash: [: -gt: unary operator expected    

Você também tem alguns outros problemas em seu script, a lógica ou a lógica deve ser colocada como:

  [ "$foo" -gt "$bar" ] || [ "$foo" -ge 90 ]    

Também use melhor o shell keywod [[ em vez de abcdefghijklmn4 ( [ ) comando para evitar muitas armadilhas:

  [[ "$foo" -gt "$bar" ]] || [[ "$foo" -ge 90 ]]    

Para comparações aritméticas, você também pode usar (( e operadores aritméticos regulares:

  rootfs0   

Você nem precisa colocar rootfs1 na frente do nome da variável:

  rootfs2   
 

The variable used is empty, leading to the error message regarding unary operator. Possible reason could be there is no rootfs in df -H output i.e. in your system.

$ foo= $ [ $foo -gt 10 ] && echo OK bash: [: -gt: unary operator expected 

You have also some other issues in your script, the OR logic should be put as:

[ "$foo" -gt "$bar" ] || [ "$foo" -ge 90 ] 

Also better use the shell keywod [[ instead of test ([) command to avoid many pitfalls:

[[ "$foo" -gt "$bar" ]] || [[ "$foo" -ge 90 ]] 

For arithmetic comparisons, you can also use (( and regular arithmetic operators:

(( "$foo" > "$bar" )) || (( "$foo" >= 90 )) 

You don't even need to put $ in-front of the variable name:

(( foo > bar )) || (( foo >= 90 )) 
 
 

Perguntas relacionadas

0  Como podemos evitar inserir o caminho de cada arquivo diferente a cada vez em um script shell?  ( How can we avoid entering the path of every different file each time in a shell ) 
Eu tenho que enviar um script para slurm. Devo inserir o caminho do diretório sempre que alterar o caminho do script de envio. Por exemplo, se estou em ABCDE...

6  Minha função de bash é executada apenas uma vez por terminal aberta  ( My bash function runs only once per terminal opened ) 
Quando eu tento executar minha função bash, definida em .bashrc, por uma segunda vez no mesmo terminal, ela não funciona. O código é o seguinte: lspci6 ...

3  Como definir a linguagem de resposta do SVN Info / Ligue de chamadas?  ( How to set svn info response call result language ) 
Eu localizei o Ubuntu Russo 11.10. Mas todos os meus scripts usam coisas como REMOTE_REV=`svn info $REMOTE_REPO | grep '^Revision:' | awk '{print $2}'` ...

13  A maneira mais rápida de criar um arquivo de um terminal  ( The fastest way to create a file from a terminal ) 
Qual é a maneira mais simples de criar um arquivo usando uma linha de comando? Normalmente eu uso: touch filename Mas isso é o caminho mais simples / mais...

0  Extrair linha do arquivo  ( Extract line from file ) 
Um arquivo que preciso extrair informações da aparência 2 41620 . T G 100 PASS AC=3;AF=0.000599042;AN=5008;NS=2504;DP=1887...

22  Bash Script não executando de Crontab [Duplicate]  ( Bash script not executing from crontab ) 
. Esta pergunta já tem respostas aqui : Por que os scripts crontab não estão funcionando? ...

3  Directory Desktop não abrindo  ( Desktop directory not opening ) 
Eu sou completamente novo para o Ubuntu ou qualquer distribuição do Linux completamente. Ao usar o terminal, quando estou no diretório / home / username o c...

9  Tirando linhas de "acesso negado"  ( Taking out access denied lines ) 
Quando eu uso find para ver todos os arquivos PDF no diretório /home , estou vendo access denied . Para eliminá-los, tentei: find /home -iname "*.pdf" ...

2  Por que meu script shell não está sendo executado? [fechado]  ( Why is my shell script not executing ) 
. fechado . Esta pergunta precisa detalhes ou clareza . Atualmente não está aceitando respostas. ...

17  Por que preciso correr "/ bin / bash --login"  ( Why do i need to run bin bash login ) 
Acabei de configurar um novo servidor Ubuntu 13.10 com Ruby 2.1.1 instalado através de ABCDEFGHIJKLMNABCDEFGHIJKLMN1 . O problema é que, sempre que eu mude...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.