Estoy trabajando en un script bash que me gustaría trabajar para varios tipos de VCS. Estoy pensando en probar si un directorio es un repositorio para un sistema ejecutando un comando de información típico y verificando el código de retorno, el éxito o el error. En pseudocó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
Puedo ejecutar un comando, por ejemplo,
darcs show repo
y usarlo $?
para obtener su código de retorno.
Mi pregunta es: ¿hay una forma ordenada de ejecutar y devolver el número del código de retorno en una línea? por ejemplo
if [ 0 -eq `darcs show repo`$? ];
¿O tengo que definir una función?
Un requisito adicional es que tanto stderr como stdout deben imprimirse.
fuente
Como otros ya han mencionado,
if command
prueba sicommand
tiene éxito. De hecho,[ … ]
es un comando ordinario, que puede usarse fuera deif
owhile
condicional, aunque es poco común.Sin embargo, para esta aplicación, probaría la existencia de los directorios característicos. Esto será correcto en más casos extremos. Bash / ksh / zsh / dash versión (no probado):
fuente
Bueno, no es muy bonito, pero es una forma de hacerlo en línea:
Por definición, si prueba el código de salida de un comando, no necesita hacer una comparación explícita, a menos que desee algo más que éxito o fracaso. Probablemente haya una forma más elegante de hacer esto.
fuente
Otra opción sucinta sería:
fuente