이것은 처음으로이 사이트를 사용하여 bash 스크립팅을 처음 접하기 시작했습니다. 필자는 스크립트 패키지를 작성하여 사용자가 설치하려는 소프트웨어 패키지 목록을 제공 한 다음 나중에 실제로 실행할 수있는 두 번째 스크립트 파일에 선택 사항을 출력하도록하고 있습니다. 지금까지 제 스크립트는 반 작동 중이지만 어떻게해야 하는지를 알아내는 데 도움이 필요합니다. A) 스크립트를 반복하면 스크립트가 반복되므로 스크립트가 다시 시작되고 스크립트를 종료하는 대신 다른 스크립트를 선택할 수 있습니다. B) 확인에 "아니오"또는 "nN"을 선택하면 선택 목록으로 돌아갑니다 wigging 대신 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
감사합니다. @janos는 내가 원했던 것입니다. :) 내가 바꾸고 싶은 유일한 다른 점은 스크립트가 (어떤 기본 설정보다) 생성 된 dir이므로 모든 시스템에서 사용할 수 있습니다. 또한 각 선택 항목에 작은 조정을 가해 "아니오"프롬프트가 이제 작동합니다.
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