En bash puedo hacer lo siguiente:
if [ -f /tmp/test.txt ]; then echo "true"; fiSin embargo, si agrego sudoal 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

sudosolo eltesty / o solo elecho. No toda laifdeclaración.if sudo test? Sí, eso sería mejor. No puedo usartestsin elif, porque establece el código de salida de lo contrario.Respuestas:
sudoejecuta 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 componentesifincorporados ( es un componente integrado ). Tenga en cuenta que las opciones-iy-sse 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
-io-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