Created
May 4, 2016 11:52
-
-
Save akira345/cbc508e1d3d1c9fbfd44924bd4ad3165 to your computer and use it in GitHub Desktop.
Bashでファイラーもどきのサンプル
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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