O script Bash funciona via terminal, mas não via menu principal

2

Quando executo um script bash no terminal ou nautilus, ele funciona corretamente, mas quando eu o executo através do 'Main Menu' do gnome, ele retorna um erro.

read -p "" -n1 selection

Esta é a linha que retorna o seguinte erro:

/usr/local/bin/php-version.sh: 9: read: Illegal option -n

Mas quando eu executo o script via terminal ( ./file.sh ), não há problema com isso

A entrada do menu principal é bash usr/local/bin/php-version.sh

As permissões de arquivo são 755, o proprietário é raiz.

EDITAR:

/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 (onde o comando read sempre funciona)

#!/bin/bash

ps aux | grep $$ | grep -v grep

read -p "" -n1 test

echo -e "\n"

env

$SHELL
    
por Scriptim 07.10.2016 / 23:21

1 resposta

0

Eu realmente não vejo porque read "" -n1 selection funciona no terminal e não no menu. A mensagem de erro também parece enganosa. No entanto, a sintaxe correta do bash deve ser

read -n 1 selection

Você pode alterar essa linha em php-version.sh .

Além de todos os scripts parecerem um pouco estranhos. A maioria dos comandos sudo não deve ser sudo . De qualquer forma, essa não foi a questão.

    
por 08.10.2016 / 00:55