これは私の初めてのbashスクリプトとこのサイトを使った初心者です。私は、インストールするソフトウェアパッケージのリストをユーザーに提供し、後で実際に選択肢をインストールするために後で実行できる2番目のスクリプトファイルに選択肢を出力するためのスクリプトに取り組んでいます。 これまでのところ、私のスクリプトは半作業ですが、どうすればよいか分かりました。 A)スクリプトを一度ループして再起動し、スクリプトを終了し、スクリプトを終了する代わりに別のスクリプトを選択できるようにする B)確認に「No」または「nN」を選択すると、 yes/no以外のものを入力した場合、有効な入力を促しますbashスクリプトをループする
これは私の現在のスクリプトですが、恐らくフォーマットがひどく、非効率である可能性が高いと思いますが、初めての小規模な学校私が取り組んでいるプロジェクト。どんな助けもありがとう、ありがとう!
#!/bin/bash
#bash script to present list of packages for customer install output to txt
if [[ ! -e /home/aarone/pkglist.txt ]]; then
echo "Making package list script"
echo "#!/bin/bash" > /home/aarone/pkglist
chmod -R 777 /home/aarone/pkglist
fi
# Declare variable choice and assign value 4
choice=4
# print to stdout
echo "1. Antivirus GUI"
echo "2. Firewall GUI"
echo "3. MariaDB"
echo -n "Please choose a A package [1,2 or 3]? "
# Loop while the variable choice is equal 4
# bash while loop
while [ $choice -eq 4 ]; do
#read user input
read choice
# bash nested if/else
if [ $choice -eq 1 ]
then
echo "You have chosen word: Antivirus GUI"
apt show clamtk 2>/dev/null | egrep '^Description|^Download'
read -r -p "Are you sure? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
echo "apt-get clamtk" >> pkglist
else
echo "Input not understood"
continue
fi
else
if [ $choice -eq 2 ] ; then
echo "You have chosen package: Firewall GUI"
apt show gufw 2>/dev/null | egrep '^Description|^Download'
read -r -p "Are you sure? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
echo "apt-get gufw" >> pkglist
else
read choice
fi
else
if [ $choice -eq 3 ] ; then
echo "You have chosen package: Office"
apt show libreoffice 2>/dev/null | egrep '^Description|^Download'
read -r -p "Are you sure? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
echo "apt-get libreoffice" >> pkglist
fi
else
echo "Please make a choice between 1-3 !"
echo "1. Antivirus GUI"
echo "2. Firewall GUI"
echo "3. Office application"
echo -n "Please choose a word [1,2 or 3]? "
choice=4
fi
fi
fi
done
ありがとうございました@ジャノスは、私が欲しかったものです。 :)私が変更したい唯一の他のものは、スクリプトが作成されたディレクトリ(よりデフォルトのもの)ですので、どのシステムでも使用できます。 また、それぞれの選択肢に小さな調整を加えて、「いいえ」プロンプトも機能するようにしました。
1)
echo "You have chosen package: Antivirus GUI"
apt show clamtk 2>/dev/null | egrep '^Description|^Download'
while true; do
read -r -p "Are you sure? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
echo "apt-get install -y clamtk" >> "$pkglist"
break
elif [[ "$response" =~ ^([nN][oO]|[nN])+$ ]]
then
echo "Cancelled"
break
else
echo "Input not understood"
fi
done
;;
が何であれ* 'chmod 777'は間違っていて危険です***あなたのユースケースに必要なパーミッションを知る必要があります。しかし、実際には、匿名の侵入者を含むユーザーにファイルへの完全な書き込みアクセス権を与えることは実質的にありません。 – tripleee
しばらくお待ちください 'chmod 777' – janos