【发布时间】:2023-02-11 08:56:19
【问题描述】:
我写了一个 bash 脚本来下载另一个脚本。要运行第一个脚本,我使用
curl -s get.domain.com | bash
我使用以下脚本下载:
#!/bin/bash
setup_dir=$(dirname "$(readlink -f $0)")
setupbuild=$vmsetup_dir/setupbuild
fileslocation=files.domain.com
wget -r -np -nH -A .sh ${fileslocation} -P ${setupbuild}
find ${setupbuild} -name "*.sh" -exec chmod +x {} +
exec ${vmsetupbuild}/menu.sh
在脚本的最后,我想运行下载的脚本。这是出了问题的地方,我根本不明白。
被调用脚本的菜单似乎有效。然而,当做出选择时,回声被忽略并且出口也没有做任何事情。
如果我从提示中启动脚本,一切都会按预期进行。
我曾尝试在不同的地方放置一个 if,但这也无济于事。似乎被调用脚本中的某些内容被忽略了。
菜单.sh:
#!/bin/bash
main_menu() {
clear
echo "1) Option 1"
echo "2) Option 2"
echo "3) Other option"
echo "4) Quit"
read -p "Enter your choice: " main_menu_choice
case $main_menu_choice in
1)
option1
main_menu
;;
2)
option2
main_menu
;;
3)
other_option
main_menu
;;
4)
echo "Exit"
exit 1
;;
*)
echo "Invalid option. Please try again."
sleep 2
main_menu
;;
esac
}
option1() {
echo "You chose option1."
sleep 2
}
option2() {
echo "You chose option2."
sleep 2
}
other_option() {
echo "You chose other option."
sleep 2
}
main_menu
【问题讨论】:
-
脚本的标准输入连接到管道,而不是终端。