ao usar '$?' expressão no script bash

3

Estou escrevendo um script simples

#!/bin/bash

ls xyzzy.345 > /dev/null 2>&1
status =' echo $?'
echo "status is $status"

, que encontra o arquivo xyzzy.345 e registra o resultado em /dev/null . Mas quando se trata da linha status =' echo $?' , recebo este erro:

status: Unknown job: = echo $?

Mas echo $? é reconhecido no terminal.

Alguém pode me ajudar? Meu sistema operacional é o Ubuntu 12.04 LTS

    
por JackingChen 11.09.2014 / 09:00

1 resposta

15

Você tem um espaço extra entre status e = . Bash atribuições variáveis não precisam ter espaço entre o nome e o = assinar:

status='echo $?'

O que você escreveu é chamar o comando status com o único argumento =' echo $?' .

Tudo isso dito, acho que o que você provavelmente quer escrever é:

status=$?

Isso armazena o valor de $? na variável status .

Se o seu código real for um pouco mais complicado e você quiser executar um comando e salvar o valor, use um destes:

status='echo "$?"'
status=$(echo "$?")

Eles usam substituição de comandos para acessar a saída de um comando.

    
por 11.09.2014 / 09:10

Tags