在 bash 中重复特定代码行
Repeat a specific code line in bash
我写了一个简单的 bash 脚本,带对话框,用于 post-在 deepin 发行版上安装。该脚本有一个用对话框创建的简单菜单,现在我的问题是我不知道如何在每个命令完成后重复菜单。
这是脚本的一部分:
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
;;
这个简单的测试似乎工作正常。试一试:
$ 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
我写了一个简单的 bash 脚本,带对话框,用于 post-在 deepin 发行版上安装。该脚本有一个用对话框创建的简单菜单,现在我的问题是我不知道如何在每个命令完成后重复菜单。
这是脚本的一部分:
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
;;
这个简单的测试似乎工作正常。试一试:
$ 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