O último comando pode ser bem-sucedido, mas você só salva os status de saída da falha grep
s em rc
. Portanto, se alguma das árvores grep
s falhar, seu script sairá com um status de saída diferente de zero.
Então, por que o seguinte dá 1 quando eu faço echo $?
?
#!/bin/bash
echo "two">file.txt
ARRAY=(one three two)
rc=0
for i in ${ARRAY[@]}; do
echo "grepping $i "
grep "$i" file.txt || rc=$?
done
exit $rc
O último comando é bem-sucedido, pois grep
s para two
.
A saída é:
grepping one
grepping three
grepping two
two
~$ echo $?
1
Eu esperava 0. Note recebendo rc como 1 se qualquer comando no loop falhar é o que eu realmente quero. Mas eu quero entender porque isso está acontecendo neste caso
O último comando pode ser bem-sucedido, mas você só salva os status de saída da falha grep
s em rc
. Portanto, se alguma das árvores grep
s falhar, seu script sairá com um status de saída diferente de zero.
Tags bash shell shell-script