터미널이나 노틸러스에서 bash 스크립트를 실행하면 제대로 작동하지만 gnome의 "기본 메뉴"를 통해 실행하면 오류가 반환됩니다.
read -p "" -n1 selection
이는 다음 오류를 반환하는 줄입니다.
/usr/local/bin/php-version.sh: 9: read: Illegal option -n
하지만 터미널()을 통해 스크립트를 실행하면 ./file.sh
문제가 없습니다.
메인 메뉴 항목은 다음과 같습니다.bash usr/local/bin/php-version.sh
파일 권한은 755이고 소유자는 루트입니다.
편집하다:
/usr/local/bin/php-version.sh
#!/bin/bash
sudo echo -e "sudo/root permission: \e[32mOkay\e[0m"
echo -e "Type \e[2m5\e[0m to change from php version \e[1m7 \e[0mto \e[1m5\e[0m"
echo -e "Type \e[2m7\e[0m to change from php version \e[1m5 \e[0mto \e[1m7\e[0m"
echo -en "\e[1mSelect: \e[0m"
read -p "" -n1 selection
echo
case "$selection" in
"5")
sudo a2dismod php7.0 >> /dev/null
sudo a2enmod php5 >> /dev/null
sudo a2query -m php5
;;
"7")
sudo a2dismod php5 >> /dev/null
sudo a2enmod php7.0 >> /dev/null
sudo a2query -m php7.0
;;
*)
sudo echo -e "\e[91mInvalid input: \e[39m$selection\e[0m"
echo -en "\e[2mPress Enter..."; sed -n q </dev/tty
exit 1
;;
esac
echo "Restarting apache2..."; sudo service apache2 restart
echo -en "\e[2mPress Enter..."; sed -n q </dev/tty
/usr/local/bin/test.sh(이 read
명령은 항상 유효합니다.)
#!/bin/bash
ps aux | grep $$ | grep -v grep
read -p "" -n1 test
echo -e "\n"
env
$SHELL
답변1
read "" -n1 selection
메뉴가 아닌 터미널에서 작동하는 이유를 정말로 이해하지 못합니다 . 오류 메시지도 오해의 소지가 있는 것 같습니다. 그러나 올바른 bash 구문은 다음과 같습니다.
read -n 1 selection
이 줄을 변경할 수 있습니다 php-version.sh
.
그 외에는 전체 스크립트가 조금 이상해 보입니다. 대부분의 sudo
명령은 가 아니어야 합니다 sudo
. 어쨌든 그것은 문제가 되지 않습니다.