En bash puedo hacer lo siguiente:
if [ -f /tmp/test.txt ]; then echo "true"; fi
Sin embargo, si agrego sudo
al frente, ya no funciona:
sudo if [ -f /tmp/test.txt ]; then echo "true"; fi
-bash: syntax error near unexpected token `then'
¿Cómo puedo hacer que funcione?
bash
command-line
sudo
prompt
m33lky
fuente
fuente
sudo
solo eltest
y / o solo elecho
. No toda laif
declaración.if sudo test
? Sí, eso sería mejor. No puedo usartest
sin elif
, porque establece el código de salida de lo contrario.Respuestas:
sudo
ejecuta su argumento usandoexec
, no a través de un intérprete de shell. Por lo tanto, está limitado a programas binarios reales y no puede usar funciones de shell, alias o componentesif
incorporados ( es un componente integrado ). Tenga en cuenta que las opciones-i
y-s
se pueden usar para ejecutar los comandos dados en un shell de inicio de sesión o no, respectivamente (o solo el shell, de forma interactiva; tenga en cuenta que tendrá que escapar de los puntos y comas o citar el comando).fuente
-i
o-s
, ¿la declaración if se evaluará correctamente?Intente llamar a la línea como un argumento de cadena a través del shell.
fuente