追加のシェルスクリプトを必要とするメニューベースのスクリプトがあります。問題は、添付のシェルスクリプトが完了するとメインメニューに戻るのではなく完全に終了することです。
コードは次のとおりです。
options=("Deploy code" "Backup a directory or file" "Transfer file SCP" "Start tool b" "Quit")
select opt in "${options[@]}"; do
case $REPLY in
1) command1; break;;
2) sh ./backup-script.sh; break;;
3) test1; break;;
4) bla2; break;;
5) break 2 ;;
*) echo "Invalid option selected" >&2
esac
done
backup-script.shのコードは次のとおりです。
#!/bin/bash
# define params
read -p "Provide full path of file(s) or folder(s) you want to create a backup of: " param_backup
backed_up_path=$(echo "${param_backup}_bkp_$(date +"%Y-%m-%d_%H-%M-%S")");
# execute backup with params
echo
echo "Attempting to create backup of specified file(s) or folder(s)..."
if cp -prvf ${param_backup} ${backed_up_path}
then
echo
printf "\033[1;32mSUCCESS: Backup created!\033[0m\n"
else
echo
printf "\033[1;31mERROR: There was an error and the backup could not be performed.\033[0m\n"
printf "\033[1;31m Please try again and make sure that the source path is valid or exists!\033[0m\n"
fi
echo
スクリプトをインポートしてから戻り関数を試してみましたが、役に立ちませんでした(または私が何か間違っています)。
backup-script.sh実行が完了した後にメインメニューに戻る方法を知っていますか?
ありがとうございます!
答え1
次のコマンドを使用して、期待どおりに機能するようにしました。
backup () {
./backup_script.sh
read -rsn1 -p "Press any key to go back to main menu"
clear
}
options=("Deploy code" "Backup a directory or file" "Transfer file SCP" "Start tool b" "Quit")
select opt in "${options[@]}"; do
case $REPLY in
1) command1; ;;
2) backup; ;;
3) test1; ;;
4) bla2; ;;
5) break 2 ;;
*) echo "Invalid option selected" >&2
esac
done