Skip to content

Instantly share code, notes, and snippets.

@akira345
Created May 4, 2016 11:52
Show Gist options
  • Save akira345/cbc508e1d3d1c9fbfd44924bd4ad3165 to your computer and use it in GitHub Desktop.
Save akira345/cbc508e1d3d1c9fbfd44924bd4ad3165 to your computer and use it in GitHub Desktop.
Bashでファイラーもどきのサンプル
#!/bin/sh
# http://askubuntu.com/questions/1705/how-can-i-create-a-select-menu-in-a-shell-scriptより参照
#メインメニュー
show_menu(){
NORMAL=`echo "\033[m"`
MENU=`echo "\033[36m"` #Blue
NUMBER=`echo "\033[33m"` #yellow
FGRED=`echo "\033[41m"`
RED_TEXT=`echo "\033[31m"`
ENTER_LINE=`echo "\033[33m"`
echo -e "${MENU}*********************************************${NORMAL}"
echo -e "${MENU}**${NUMBER} 1)${MENU} lsを実行  ${NORMAL}"
echo -e "${MENU}**${NUMBER} 2)${MENU} pwdを実行 ${NORMAL}"
echo -e "${MENU}**${NUMBER} 3)${MENU} オプションメニュー ${NORMAL}"
echo -e "${MENU}*********************************************${NORMAL}"
echo -e "${ENTER_LINE}Please enter a menu option and enter or ${RED_TEXT}enter to exit. ${NORMAL}"
read menu
}
#オプションメニュー
show_option_menu(){
NORMAL=`echo "\033[m"`
MENU=`echo "\033[36m"` #Blue
NUMBER=`echo "\033[33m"` #yellow
FGRED=`echo "\033[41m"`
RED_TEXT=`echo "\033[31m"`
ENTER_LINE=`echo "\033[33m"`
echo -e "${MENU}*********************************************${NORMAL}"
echo -e "${MENU}**${NUMBER} 1)${MENU} オプション1 ${NORMAL}"
echo -e "${MENU}**${NUMBER} 2)${MENU} オプション2 ${NORMAL}"
echo -e "${MENU}**${NUMBER} 3)${MENU} オプション3 ${NORMAL}"
echo -e "${MENU}*********************************************${NORMAL}"
echo -e "${ENTER_LINE}Please enter a menu option and enter or ${RED_TEXT}enter to exit. ${NORMAL}"
read opt
option_menu
}
function option_picked() {
COLOR='\033[01;31m' # bold red
RESET='\033[00;00m' # normal white
MESSAGE=${@:-"${RESET}Error: No message passed"}
echo -e "${COLOR}${MESSAGE}${RESET}"
}
# Y/N選択。引数に実行するコマンドを指定。
function select_y_or_n() {
echo $1;
PS3="Answer? "
while true;do
echo "実行しますか?[y/n]"
read answer
case $answer in
"yes" | "Y" | "y")
eval $1;
return 0;
;;
"no" | "N" | "n")
return 1;
;;
*)
echo -e "cannot understand your answer.\n"
;;
esac
done
}
# オプションメニュー
function option_one() {
# lsを実行
select_y_or_n "ls -lah";
}
function option_tow() {
# lsを実行
select_y_or_n "ls -lah";
}
function option_three() {
# lsを実行
select_y_or_n "ls -lah";
}
# メインメニュー
function select_one() {
# lsを実行
select_y_or_n "ls -lah";
}
function select_two() {
status=1
while [ $status -eq 1 ]; do
echo "パスを入れてね"
read str_path
if [ "$str_path" != "" ]; then
status=0;
fi
done
select_y_or_n "cd ${str_path};pwd";
}
function option_menu() {
while [ opt != '' ]
do
if [ $opt = "" ]; then
return 0;
else
case $opt in
1)
option_picked "オプション1選択"
option_one;
show_option_menu;
;;
2)
option_picked "オプション2選択"
option_two;
show_option_menu;
;;
3)
option_picked "オプション3選択"
option_tree;
show_option_menu;
;;
x)return 0;
;;
\n)return 0;
;;
*)clear;
option_picked "オプションを選択してください。";
show_option_menu;
;;
esac
fi
done
}
#メイン
clear
show_menu
while [ menu != '' ]
do
if [ $menu = "" ]; then
exit;
else
case $menu in
1)
option_picked "1を選択";
select_one;
show_menu;
;;
2)
option_picked "2を選択";
select_two;
show_menu;
;;
3)
option_picked "3を選択";
show_option_menu;
show_menu;
;;
x)exit;
;;
\n)exit;
;;
*)clear;
option_picked "メニューを選択してください。";
show_menu;
;;
esac
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment