Você já tem todos os blocos de construção de que precisa, basta inverter a lógica (e corrigir um pequeno erro de sintaxe).
Primeiro, um pouco de fundo. [
é (basicamente) um alias para test
. Muito disso pode ser encontrado (em partes e pedaços) na página man do test (1); mesmo que aprender a sintaxe para tudo provavelmente não seja prático particularmente para começar, recomendo que você se familiarize com o que o test
é capaz de fazer.
Se eu entendi sua pergunta corretamente, você quer executar o comando rar
se e somente se $NOMBREX2
não for igual a "0".
test
tem muitos operadores condicionais, incluindo =
("as cadeias são iguais") e !=
("as cadeias não são iguais"). Observe que valores inteiros usam operadores diferentes , incluindo -eq
e -ne
, respectivamente. Por que isso é feito assim está além de mim, mas agora a água está debaixo da ponte.
Existem duas maneiras no bash de executar um comando se uma instrução for avaliada como verdadeira ou, mais precisamente, se um comando retornar um status de saída zero; coloque-o em um bloco if ...; then .. fi
ou use o operador &&
para separar os comandos. Você pode fazer a mesma coisa se quiser executar um comando quando uma instrução for avaliada como falsa (retorna um status de saída diferente de zero); if ! ...; then ... fi
(o !
significa "não") ou usa ||
entre os comandos.
Como já sabemos que a condição que você deseja para executar o comando rar
é uma comparação de desigualdade, podemos escrever isso de duas maneiras diferentes (supondo que você queira comparações de strings; caso contrário, em vez de !=
use -ne
nas condições):
Opção 1 (idiomática, boa para condições simples e comandos únicos):
test "$NOMBREX2" != "0" && rar a -r ...
Opção 2 (boa para condições mais complexas ou vários comandos):
if [ "$NOMBREX2" != "0" ]; then
rar a -r ...
# ... anything else goes here ...
fi