removido
(usa Nenhuma)
Enviado em 30/04/2017 - 11:46h
Mauriciodez escreveu:
pessoas .. tenho a variável no script
#!/bin/bash
actionlogin=$( if [ $teste1 == "#" ] ; then
sed -i '/mauricio/s/#//' autologin_zenity
sed -i '/timeout=0/s/#//' autologin_zenity
else
sed -i '/mauricio/s/^/#/' autologin_zenity
sed -i '/timeout=0/s/^/#/' autologin_zenity
fi )
ela funciona de boa ... o problema é q ela está sendo executada na abertura do script (automaticamente).. pq ???
Quando você armazena um valor dentro de
$() ou
`` , você diz ao script para armazenar o
resultado (ou retorno) do comando inserido. Por exemplo:
p=$(echo "home: $HOME")
Nesse contexto, o comando
echo "home: $HOME" será executado assim que você declarar a variável
p , e o valor armazenado será o resultado do comando (no meu caso:
home: /home/ruan ).
Para armazenar um script dentro de uma variável para executá-lo posteriormente, faça da seguinte forma:
actionlogin="if [ \$teste1 == \"#\" ] ; then
sed -i '/mauricio/s/#//' autologin_zenity
sed -i '/timeout=0/s/#//' autologin_zenity
else
sed -i '/mauricio/s/^/#/' autologin_zenity
sed -i '/timeout=0/s/^/#/' autologin_zenity
fi"
Lembre-se de colocar barra invertida antes de qualquer variável e antes de aspas duplas, como foi em
\$teste1 e \"#\", caso contrário o bash vai interpretar a variável e substituir $teste1 pelo valor dela e as aspas duplas não serão inseridas.
Para executar o script da variável $actionlogin, você usa:
eval "$actionlogin"
*As aspas duplas são necessárias porque há quebra de linhas dentro da variável declarada actionlogin.
--
Linux Counter: #596371