2017-05-18 8 views
0

私はdeepinディストリビューションのインストール後に使用する、ダイアログ付きのシンプルなbashスクリプトを書きました。スクリプトは、ダイアログで作成されたシンプルなメニューを持っているので、すべてのコマンドが完了した後にメニューを繰り返す方法がわからないという問題がありました。bashで特定のコード行を繰り返す

これは、スクリプトの一部です:

sudo apt-get install dialog 
cmd=(dialog --separate-output --checklist "Seleziona i programmi che vuoi installare:" 22 76 16) 
options=(1 "Impostazione Mirror GARR" off # qualsiasi impostazione può essere impostata su "on" 
2 "Aggiornamento di sistema" off 
3 "Installazione font Microsoft" off 
4 "Installazione Gdebi" off 
5 "Synaptic" off 
6 "BleachBit" off 
7 "Open JDK 8" off 
8 "Supporto lettura DVD" off 
9 "LibreOffice" off 
10 "VLC Media Player" off 
11 "Flash Player" off 
12 "Google Chrome" off 
13 "Teamiewer" off 
14 "Skype" off 
15 "Brasero" off 
16 "iFuse per supporto device Apple" off 
17 "Kodi" off 
18 "Gimp" off 
19 "Telegram" off 
20 "Enpass Password manager" off 
21 "Opera Browser" off 
22 "GUFW" off 
23 "Vivaldi Browser" off 
24 "Risparmio energetico TLP" off 
25 "Pulizia del sistema" off) 
choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty) 
clear 
for choice in $choices 
do 
case $choice in 

1) 
#Setting mirror on italian server GARR 
    echo "Impostazione Mirror GARR" 
cd $HOME & 
cp /etc/apt/sources.list backup.sources.list 
bash -c 'cat <<EOF> /etc/apt/sources.list 
# Generated by deepin-installer 
# deb [by-hash=force] http://packages.deepin.com/deepin unstable main contrib non-free 
# deb-src http://packages.deepin.com/deepin unstable main contrib non-free 
########################################################################################## 
deb [by-hash=force] http://ba.mirror.garr.it/mirrors/deepin/ panda main contrib non-free 
EOF' 
     sudo apt-get update 
;; 

2) 
#Update of the repo and upgrade the system 
clear 
    echo "Aggiornamento del sistema" 
apt-get update && sudo apt-get upgrade -y 
;; 
+3

オプション「26終了」を追加し、スクリプト全体をカバーするwhileループを使用してください。 –

+0

はい、コマンドの実行後と同じですが、bashスクリプトは終了します。スクリプトのすべての単一コマンドにwhileコマンドを使用することは可能です。 – Fasbyte01

答えて

1

この単純なテストが正常に動作するようです。

$ cmd=(dialog --separate-output --checklist "Seleziona i programmi che vuoi installare:" 22 76 16) 
$ options=(1 "Impostazione Mirror GARR" off 2 "Aggiornamento di sistema" off 3 "Installazione font Microsoft" off 4 "Exit" off) 
$ while [ "$choices" -ne "4" ];do choices=$("${cmd[@]}" "${options[@]}" 2>&1 >/dev/tty);case $choices in 1) echo "number one" && sleep 5;;esac;done 
+0

私は '-bash:[::integer expression expected']を避けるためにwhile [[" $ choices "-ne" 4 "]]'にする必要があると思いますが、良い答え+ – hmedia1

+0

、今は完璧に動作します。 – Fasbyte01

関連する問題