Comentando uma linha no script Bash baseado na variável

0

Eu não sou programador e estou tentando fazer meu primeiro roteiro.

Eu tenho:

# NOMBREX1:lalalala
# NOMBREX2:0

if [ "$NOMBREX2" == "0" ]; 
    then ??????
fi
$COMMENT1 rar a -r .........

Se NOMBREX2=0 eu quiser renomear $COMMENT1 para # para comentar esta linha.

Como posso fazer isso?

    
por trugulum 10.06.2014 / 10:08

1 resposta

4

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
    
por 10.06.2014 / 10:21

Tags