当我从终端或 nautilus 运行 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,所有者为root。
编辑:
/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
.无论如何,这不是问题。