У меня была такая же проблема только сейчас
Я понял, что добавление функции проверки и возврат, который также не будет возвращать функцию, например, в ее вызывающей программе.
On bash_functions
function install_packer_linux() {
check_wget && check_unzip
wget https://releases.hashicorp.com/packer/1.1.2/packer_1.1.2_linux_amd64.zip
unzip packer_1.1.2_linux_amd64.zip
mv packer ~/.local/bin
rm -f packer_1.1.2_linux_amd64.zip
}
function check_unzip() {
if ! [ -x "$(command -v unzip)" ]; then
echo "Error: unzip is not installed"
return 1
else
return 0
fi
}
function check_wget() {
if ! [ -x "$(command -v wget)" ]; then
echo "Error!: wget is not installed"
return 1
else
return 0
fi
}
$ source ~/.bash_functions
Здесь происходит только то, что шашки - это единственное место, которое они возвращают, поэтому install_packer_linux все равно продолжит
Так что вы можете сделать две вещи здесьЛибо сохраните текущий формат (функция, вызывающая другую функцию), как есть, и оцените, используя истинное значение, затем верните, если значения не соответствуют действительности, или перепишите средство проверки в основной функции installer_packer_linux
Truthy:
function install_packer_linux() {
check_wget && check_unzip || return
wget https://releases.hashicorp.com/packer/1.1.2/packer_1.1.2_linux_amd64.zip
unzip packer_1.1.2_linux_amd64.zip
mv packer ~/.local/bin
rm -f packer_1.1.2_linux_amd64.zip
}
Обратите внимание, что мы добавили ||возвратите после проверок и объедините проверки, используя &&, поэтому, если обе проверки не верны, мы возвращаем функцию