Estou trabalhando em um script bash que gostaria de trabalhar para vários tipos de VCS. Estou pensando em testar se um diretório é um repositório para um sistema executando um comando info típico e verificando o código de retorno, êxito ou erro. No pseudo-código:
if a svn command succeded;
Then run svn commands
elif a darcs command succeded;
Then run darcs commands
elif a mercurial command succeded;
then run hg commands
else
something else
fi
Eu posso executar um comando, por exemplo,
darcs show repo
e usar $?
para obter seu código de retorno.
Minha pergunta é: existe uma maneira elegante de executar e retornar o número do código de retorno em uma linha? por exemplo
if [ 0 -eq `darcs show repo`$? ];
Ou tenho que definir uma função?
Um requisito adicional é que stderr e stdout sejam impressos.
fonte
Como outros já mencionaram,
if command
testa secommand
é bem-sucedido. De fato,[ … ]
é um comando comum, que pode ser usado fora deif
ouwhile
condicional, embora seja incomum.No entanto, para esse aplicativo, eu testaria a existência dos diretórios de características. Isso estará correto em mais casos extremos. Versão Bash / ksh / zsh / dash (não testada):
fonte
Bem, não é muito bonito, mas é uma maneira de fazer isso em linha:
Por definição, se testar o código de saída de um comando, não será necessário fazer uma comparação explícita, a menos que você queira mais do que sucesso ou falha. Provavelmente existe uma maneira mais elegante de fazer isso.
fonte
Outra opção sucinta seria:
fonte