No bash, posso fazer o seguinte:
if [ -f /tmp/test.txt ]; then echo "true"; fi
No entanto, se eu adicionar sudo
na frente, ele não funcionará mais:
sudo if [ -f /tmp/test.txt ]; then echo "true"; fi
-bash: syntax error near unexpected token `then'
Como posso fazer isso funcionar?
bash
command-line
sudo
prompt
m33lky
fonte
fonte
sudo
apenas paratest
e / ou apenas paraecho
. Nem toda aif
declaração.if sudo test
? Sim, seria melhor. Não posso usartest
sem oif
, porque ele define o código de saída de outra forma.Respostas:
sudo
executa seu argumento usandoexec
, não através de um interpretador de shell. Portanto, é limitado a programas binários reais e não pode usar funções de shell, aliases ou builtins (if
é um builtin). Observe que as opções-i
e-s
podem ser usadas para executar os comandos fornecidos em um shell de login ou não, respectivamente (ou apenas o shell, interativamente; observe que você precisará escapar do ponto-e-vírgula ou citar o comando).fonte
-i
ou-s
, a instrução if será avaliada corretamente?Tente chamar a linha como um argumento de string através do shell.
fonte