Linuxシェルプログラミング学習記30:カラフルなオプションメニューを作成する

1 要件分析

存在する

Linux シェル プログラミング学習ノート 21: ループ ステートメントの選択を使用してメニューを作成するicon-default.png?t=N7T8https://blog.csdn.net/Purpleendurer/article/details/134212033?spm=1001.2014 . 3001.5501
select in ループ ステートメントを使用して作成したメニューでは、システムによって設定されたカラー構成を使用してメニュー項目が表示されます。
メニューをより美しくするために、各メニュー項目を異なる色で表示したいのですが、これを実現するにはどうすればよいですか?

カラフルなオプションメニューを作成する2つの方法

  1. まず、表示するメニュー項目を配列に保存します。
  2. 次に、ループ文 for in を使用して、配列内のメニュー項目を表示します。メニューを表示するときに、メニューを選択する番号として各メニュー項目に数値のシリアル番号を追加し、 \e[xm (カラー表示を実現するには、31 ~ 37 の x の値)
  3. 次に、read コマンドを使用して、ユーザーが入力した値を読み取ります。
  4. 最後に、ユーザーが入力した値が判断され、それに応じて処理されます。

3 デモコード

フルーツメニューを表示し、終了メニューオプションを追加します

ユーザーが数値 n を入力すると、次のように判断されます。

n がフルーツ メニュー オプションに対応する番号の場合、対応するフルーツを表示します

n が終了メニュー オプションの番号である場合、ユーザーが終了オプションを選択したことを示します。

それ以外の場合は、ユーザーが間違った番号を入力したことを示します。

コードは以下のように表示されます:

f=(apple banana orrange peach);# 定义水果数组
c=31;   # 颜色
o=1;    #序号
for i in $f;do
     echo -e "\e[${c}m $o)$i \e[0m"; #用不同颜色显示水果选项
     let c+=1;
     if [[ $c > 37 ]]; then
         $c=31;
     fi;
     let o+=1;
done;
     
echo " $o)exit"; # 显示 退出 选项

echo -n "enter the number before the fruit your liked(1 - ${#f}):"; #提示用户输入选项前的数字
read s; #读取用户输入的字符并存入s

if [[  $s -gt 0 && $s -le ${#f} ]]; then #用户输入的是水果选项
   let c=30+s;       #计算水果选项对应的颜色
   echo -e "You selected \e[${c}m$f[$s]\e[0m";#显示用户选择的水果选项
elif [[ $s -eq ((${#f}+1)) ]]; then # 用户选择的是退出选项
   echo You selected exit;#显示用户选择了退出选项
else
   echo Your enter a error number;#显示用户输入的错误的数字
fi 

3.1 スクリプトファイルa.shの作成

 cpコマンドを使用してスクリプトファイルを作成し、ファイル内容を入力後、Ctrl+Dを押してファイル入力を終了します。

purpleEndurer @zsh $ cp /dev/stdin a.sh         
f=(リンゴ、バナナ、オレンジ、ピーチ);# フルーツ配列を定義 a>
c=31; # カラー
o=1; #i のシリアル番号
$f;do< a i =6> echo -e "\e[${c}m $o)$i \e[0m"; #フルーツのオプションを別の色で表示する      let c+=1;< / a>      fi;          $c=31;      if [[ $c > 37 ]]; then Done; echo " $o)exit"; # 終了オプションを表示







     

echo -n "好きだった果物の前に数字を入力してください(1 - ${#f}):"; #オプションの前に数字を入力するようユーザーに要求します
read s ; #ユーザーが入力した文字を読み取り、 s に保存します

if [[ $s -gt 0 && $s -le ${#f} ]]; then #ユーザーがフルーツ オプションを入力しました
   let c=30 +s; #フルーツ オプションに対応する色を計算します
   echo -e "\e[${c}m$f[$s]\e[0m"] を選択しました;#表示ユーザー選択フルーツ オプション
elif [[ $s -eq ((${#f}+1)) ]]; then # ユーザーは終了オプションを選択します
   echo 終了を選択しました;#終了オプションを選択したことをユーザーに表示します
else
   echo エラー番号を入力しました;#ユーザーが入力した間違った番号を表示します< /span> purpleEndurer @zsh $ 
フィ 

3.2 スクリプトの実行とテスト

purpleEnduler @zsh $。 ./a.sh
 1)リンゴ 
 2)バナナ 
 3)オレンジ 
 4) 桃 
 5) 終了
好きな果物の前の数字を入力します (1 ~ 4):3509 purpleEndurer @zsh $ エラー番号を入力してください。 好きな果物の前の数字を入力します (1 ~ 4):  5) 終了  4) 桃   3)オレンジ   2)バナナ   1)リンゴ 。 ./a.sh purpleEndurer @zsh $ エラー番号を入力しました。 好きな果物の前の数字を入力します (1 ~ 4):  5) 終了  4) 桃   3)オレンジ   2)バナナ   1)リンゴ  を選択しました。 ./a.sh purpleEndurer @zsh $ exit 好きな果物の前の数字を入力します (1 ~ 4):  5) 終了  4) 桃   3)オレンジ   2)バナナ   1)リンゴ  を選択しました。 ./a.sh purpleEndurer @zsh $
orrange
























 

おすすめ

転載: blog.csdn.net/Purpleendurer/article/details/134626445