In Bash kann ich Folgendes tun:
if [ -f /tmp/test.txt ]; then echo "true"; fi
Wenn ich jedoch sudo
vorne hinzufüge , funktioniert es nicht mehr:
sudo if [ -f /tmp/test.txt ]; then echo "true"; fi
-bash: syntax error near unexpected token `then'
Wie kann ich es zum Laufen bringen?
bash
command-line
sudo
prompt
m33lky
quelle
quelle
sudo
nur dietest
und / oder nur dieecho
. Nicht die ganzeif
Aussage.if sudo test
? Ja, das wäre besser. Ich kann nichttest
ohne die verwendenif
, weil es den Exit-Code anders setzt.Antworten:
sudo
führt sein Argumentexec
nicht über einen Shell-Interpreter aus, sondern unter Verwendung von . Daher ist es auf tatsächliche Binärprogramme beschränkt und kann keine Shell-Funktionen, Aliase oder Builtins verwenden (if
ist ein Builtin). Beachten Sie, dass die Optionen-i
und-s
verwendet werden können, um die angegebenen Befehle in einer Anmelde- bzw. Nicht-Anmelde-Shell (oder nur in der Shell interaktiv) auszuführen. Beachten Sie, dass Sie die Semikolons umgehen oder den Befehl in Anführungszeichen setzen müssen.quelle
-i
oder benutze-s
, wird die if-Anweisung richtig ausgewertet?Versuchen Sie, die Zeile als Zeichenfolgenargument über die Shell aufzurufen.
quelle