Fragen zur Ersetzung von Shell-Befehlen (wie $ (Befehl) oder `Befehl`), ihrem Mechanismus, der korrekten Syntax usw. Nicht zu verwechseln mit Aliasing.
Es gibt zwei Syntaxen für die Befehlssubstitution: mit Dollar-Klammern und mit Backticks. Laufen top -p $(pidof init)und top -p `pidof init`gibt die gleiche Ausgabe. Gibt es zwei Möglichkeiten, dasselbe zu tun, oder gibt es Unterschiede?
In meiner Bash-Umgebung verwende ich Variablen, die Leerzeichen enthalten, und diese Variablen bei der Befehlssubstitution. Leider kann ich die Antwort auf SE nicht finden. Wie zitiere ich meine Variablen richtig? Und wie soll ich es machen, wenn diese verschachtelt sind? DIRNAME=$(dirname "$FILE") oder zitiere ich außerhalb der Vertretung? DIRNAME="$(dirname $FILE)" …
Ich habe einen Befehl, der Daten an stdout ( command1 -p=aaa -v=bbb -i=4) ausgibt . Die Ausgabezeile kann den folgenden Wert haben: rate (10%) - name: value - 10Kbps Ich möchte diese Ausgabe aufgreifen, um diese 'Rate' zu speichern (ich denke, Pipe wird hier nützlich sein). Und schließlich möchte ich, …
Ich möchte eine Protokolldatei für ein Cron-Skript erstellen, dessen Protokolldateiname die aktuelle Stunde enthält. Dies ist der Befehl, den ich versucht habe: 0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log Leider bekomme ich diese Meldung, wenn das läuft: /bin/sh: -c: line 0: unexpected EOF while looking for matching …
#!/bin/bash function0() { local t1=$(exit 1) echo $t1 } function0 echogibt leeren Wert aus. Ich erwartete: 1 Warum wird der t1Variable nicht der Rückgabewert des Befehls exit zugewiesen - 1?
Ich probiere den Befehl aus $ b=5; echo `$b`; -bash: 5: command not found Aber es wird nicht 5 gedruckt, wie es soll. Was vermisse ich hier? Was bedeutet `(backquote / backtick) in Befehlen? scheint zu sagen, dass `die Befehle ausgewertet und durch die Ausgabe ersetzt werden.
Ich weiß, dass ich dieses Problem auf mehrere Arten lösen kann, aber ich frage mich, ob es eine Möglichkeit gibt, dies nur mit Bash-Integrationen zu tun, und wenn nicht, welche Methode am effizientesten ist. Ich habe eine Datei mit Inhalten wie AAA B C DDD FOO BAR womit ich nur …
Wie im folgenden Beispiel und wie in meiner letzten Frage In Bash, wo ist das nachgestellte Newline-Zeichen geblieben? Ich möchte wissen, "warum" es passiert x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # Output is: 610a62 # The trailing newline from the 'echo' command # has been "deleted" …
Diese Frage wurde von Server Fault migriert, da sie unter Unix und Linux Stack Exchange beantwortet werden kann. Vor 2 Jahren migriert . Eine einfache Installationsmethode für Docker (zum Beispiel) ist: curl -sSL https://get.docker.com/ | sh Ich habe jedoch auch einige gesehen, die so aussehen (anhand des Docker-Beispiels): sh -c …
Betrachten Sie dieses Skript: #!/bin/bash function start { leafpad & echo $! } PID=$(start) echo "PID is $PID" Das Skript wird erst fortgesetzt, wenn der Leafpad-Prozess beendet ist, obwohl es sich um einen Hintergrundprozess handelt. Warum ist das? Ist es möglich, einen Hintergrundprozess von einer Funktion aus zu starten?
In dieser Frage meldet jemand ein Problem bei der Verwendung eines Here-Dokuments mit einem in Anführungszeichen gesetzten Begrenzungswort innerhalb der $(...)Befehlsersetzung , wobei ein Backslash \am Ende einer Zeile innerhalb des Dokuments die Fortsetzung von Zeilen mit Zeilenumbrüchen auslöst , während dasselbe Here-Dokument außerhalb der Befehlsersetzung wie erwartet funktioniert . …
Eine StackOverflow- Antwort mit> 3.5K Stimmen enthält diesen Einzeiler für die Zuordnung zum DIRVerzeichnis des aktuellen Bash-Skripts: DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" Ich bin verwirrt über die geschachtelten Anführungszeichen. Soweit ich das beurteilen kann, werden folgende Fragmente in doppelte Anführungszeichen gesetzt: "$( cd " "${BASH_SOURCE[0]}" " …
Es ist höchste Zeit, dieses Rätsel zu lösen, das mich seit Jahren beschäftigt ... Ich habe dies von Zeit zu Zeit getroffen und dachte, das ist der richtige Weg: $(comm "$(arg)") Und dachte, meine Ansicht wurde stark von der Erfahrung gestützt. Aber ich bin mir nicht mehr so sicher. Shellcheck …
Ich verstehe, dass die modernere $(...)Befehlssubstitutionssyntax der altbasierten Syntax vorgezogen wird `, da die Verschachtelung und die Escape-Syntax einfacher und weniger fehleranfällig sind. Außerdem scheinen die meisten /bin/shMuscheln im modernen Gebrauch Folgendes zu unterstützen $(…): Bash ash (und damit BusyBox, also die meisten Embedded Linux) Strich FreeBSD / bin / …
Ich versuche, ein Skript mit einer Liste von Dateinamen aufzurufen, die von gesammelt wurden find. Nichts Besonderes, nur so etwas: $ myscript `find . -name something.txt` Das Problem ist, dass einige der Pfadnamen Leerzeichen enthalten, sodass sie bei der Argumenterweiterung in zwei ungültige Namen aufgeteilt werden. Normalerweise würde ich die …
We use cookies and other tracking technologies to improve your browsing experience on our website,
to show you personalized content and targeted ads, to analyze our website traffic,
and to understand where our visitors are coming from.
By continuing, you consent to our use of cookies and other tracking technologies and
affirm you're at least 16 years old or have consent from a parent or guardian.