У меня есть функция, которая, кажется, прерывается, когда я включаю ошибки с set -e
. Я подозреваю, что он работает по назначению, но я не вижу, что я делаю неправильно.set -e делает функцию прекратить работать на ранней стадии?
Вот функция:
#!/usr/bin/env bash
set -e
my_function() {
base_dir="/tmp/test"
if [ ! -d $base_dir ]; then
echo "Creating $base_dir"
mkdir -p $base_dir
touch $base_dir/some-file.txt
fi
is_edited=$(grep "foo" $base_dir/some-file.txt)
if [ ! -z $is_edited ]; then
cd $base_dir
echo "Doing stuff"
docker run --rm debian ls
fi
echo
echo "Done"
echo
}
my_function
С set -e
переворачивается, функция возвращает, казалось бы, не ударил эхо заявления. При выключенном set -e
вызывают атаки эха. Что происходит и как я могу это исправить?
'grep' возвращает ненулевой код выхода, если он не находит соответствия. Это будет считаться ошибкой 'set -e'. – Barmar
@ Бармар А, это имеет смысл. Может быть, есть лучший подход к этому, чем использование grep или есть лучший способ обработать возвращаемое значение для него? – jmreicha