У меня есть сценарий bash, где я хочу записать в файл, если одна из команд внутри оператора IF заканчивается ненулевым (поэтому, когда он выходит с ошибкой). Однако со следующим я получаю синтаксическую ошибку с неожиданным «else» в конце. Я правильно использую эту ошибку?Bash script IF и || создает ошибку синтаксиса
if [[ $f != */.* ]]; then
echo "$f"
command-one || { echo 'Something went wrong with Command-one at file ' $f ' !' >> ../corrupted.txt } || error=1
command-two || { echo 'Something went wrong with Command-two at file ' $f ' !' >> ../corrupted.txt } || error=1
command-three || { echo 'Something went wrong with Command-three at file ' $f ' !' >> ../corrupted.txt } || error=1
if [ error == 0 ]
then
echo "====================================================" >> ../ok.txt
echo "All went well with: " $f >> ../ok.txt
fi
error=0
else
echo "This file is corrupted: " $f >> ../corrupted.txt
fi
Иисус, я бы никогда не подумал об этом. Большое вам спасибо, сейчас это работает как шарм. Пожалуйста, ребята выложите этот ответ, потому что это очень необычная вещь, которую я предполагаю. – Bert
@Bert: Использовать http://www.shellcheck.net/ в будущем для исправления тривиальных ошибок синтаксиса, поймал вас таким образом. Кроме того, никто не идеален. Счастлив, ты нашел его полезным. – Inian