Como atribuir uma variável no bash sem usar $?

1

Existe alguma maneira mais fácil / elegante de atribuir um valor de retorno a uma variável? Até agora eu tenho feito algo como:

some_command_to_run
VAR_TO_SET=$?

Mas eu preferiria muito mais ter tudo em uma linha e de preferência sem usar o $? variável. Alguém sabe como?

    
por Jason Axelson 02.08.2010 / 00:58

3 respostas

4

Isso é tudo que eu sei também. No entanto, se você está apenas fazendo isso repacientemente para ver se eu comando foi bem sucedido com algo como:

if [[ $? -ne 0 ]]; then
   ...
fi

Você pode testar um diretório de comando como:

if ! mkdir foo; then
   ...
fi

Você já deve saber disso, mas achou que poderia ajudá-lo: -)

    
por 02.08.2010 / 01:56
5

A pergunta que eu tenho é "Por quê?" É a facilidade fornecida pelo Bash para realizar essa função.

No entanto, você pode fazer isso (além do que Kyle e Gilles mostraram):

do_something && do_on_success || do_on_failure
    
por 02.08.2010 / 03:27
4

Isso é tudo que existe. Se você realmente quiser em uma linha, pode escrever some_command_to_run; VAR_TO_SET=$? . Você pode fazer uma função de dois liners, mas eu não recomendo porque isso tornará seus scripts menos legíveis (mais uma coisa para aprender a entender seu código).

    
por 02.08.2010 / 01:02

Tags