Fragen zur Ersetzung von Shell-Befehlen (wie $ (Befehl) oder `Befehl`), ihrem Mechanismus, der korrekten Syntax usw. Nicht zu verwechseln mit Aliasing.
Die Beantwortung dieser Frage veranlasste mich, eine andere Frage zu stellen: Ich dachte, die folgenden Skripte tun dasselbe und die zweite sollte viel schneller sein, da die erste verwendet cat, die die Datei immer wieder öffnen muss, aber die zweite nur die Datei öffnet einmal und gibt dann nur eine …
Der folgende Code beschreibt die Situation am besten. Warum gibt die letzte Zeile kein Zeilenumbruchzeichen aus? Die Ausgabe jeder Zeile wird im Kommentar angezeigt. Ich benutze GNU Bash, Version 4.1.5 echo -n $'a\nb\n' | xxd -p # 610a620a x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a echo -ne …
for k in {0..49}; do a=$(($((2*$k))+1)); echo $a; done Hallo, ich brauche einen vereinfachten Ausdruck für die dritte Zeile, vielleicht einen, der keine Befehlsersetzung verwendet.
Nach diesem Referenzhandbuch : -E (auch -o errtrace) Wenn diese Option aktiviert ist, werden alle Traps in ERR von Shell-Funktionen, Befehlsersetzungen und Befehlen übernommen, die in einer Subshell-Umgebung ausgeführt werden. Die ERR-Falle wird in solchen Fällen normalerweise nicht vererbt. Ich muss es jedoch falsch interpretieren, da Folgendes nicht funktioniert: #!/usr/bin/env …
Ich versuche, grep gegen eine Liste von ein paar hundert Dateien auszuführen: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Obwohl ich nach einer Zeichenfolge greife, von der ich weiß, dass sie in den Dateien enthalten ist, werden die Dateien nicht durchsucht: $ grep -i 'foo' <(cat files.txt) $ …
Angenommen, ich muss Anführungszeichen verwenden, um die Subshell-Ausgabe wie folgt zu kapseln: DATA="$(cat file.hex | xxd -r)" Aber ich muss solche Sachen verschachteln wie: DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")" Ich kann keine einfachen Anführungszeichen verwenden, da die darin enthaltenen Variablen nicht erweitert werden. Das Ausblenden …
Gegeben cmd='fun(){ echo "$@"; }; fun $(fun $(fun hi))' Muscheln müssen in der Regel zwei Gabeln bilden, um dies zu erreichen strace-f(){ strace -f "$@" 2>&1; }; for sh in dash bash zsh ksh; do printf "$sh\t" ; strace-f $sh -c "$cmd" |grep -e clone -e fork -c; done außer …
Gibt es eine Möglichkeit, mehrere Variablen (nicht nur ganze Zahlen) in forSchleifen anzugeben bash? Ich kann 2 Akten haben, die beliebigen Text enthalten, mit dem ich arbeiten müsste. Was ich funktionell brauche, ist so etwas: for i in $(cat file1) and j in $(cat file2); do command $i $j; done …
Im Anschluss an: unerwartetes Verhalten bei der Ersetzung von Shell-Befehlen Ich habe einen Befehl, der eine riesige Liste von Argumenten aufnehmen kann, von denen einige legitimerweise Leerzeichen enthalten können (und wahrscheinlich andere Dinge). Ich habe ein Skript geschrieben, das diese Argumente mit Anführungszeichen für mich generieren kann, aber ich muss …
Ich versuche zu verstehen, wie genau Bash die folgende Zeile behandelt: $(< "$FILE") Laut der Bash-Manpage entspricht dies: $(cat "$FILE") und ich kann der Argumentationslinie für diese zweite Linie folgen. Bash führt eine Variablenerweiterung durch $FILE, gibt die Befehlssubstitution ein, übergibt den Wert von $FILEan cat, cat gibt den Inhalt …
Siehe die folgenden Beispiele und ihre Ausgaben in POSIX-Shells: false;echo $?oder false || echo 1:1 false;foo="bar";echo $?oder foo="bar" && echo 0:0 foo=$(false);echo $?oder foo=$(false) || echo 1:1 foo=$(true);echo $?oder foo=$(true) && echo 0:0 Wie in der am höchsten bewerteten Antwort unter /programming/6834487/what-is-the-variable-in-shell-scripting erwähnt : $? wird verwendet, um den Rückgabewert …
Ich habe Konstrukte in Skripten wie diesen gesehen: if somevar="$(somecommand 2>/dev/null)"; then ... fi Ist das irgendwo dokumentiert? Wie wird der Rückgabestatus einer Variablen ermittelt und in welcher Beziehung steht er zur Befehlssubstitution? (Würde ich zum Beispiel das gleiche Ergebnis erzielen if echo "$(somecommand 2>/dev/null)"; then?)
Ich möchte die Variablensubstitution für eine bestimmte Zeichenfolge verwenden, auf die ich über einen Befehl zugreife. Wenn ich beispielsweise etwas in meine Zwischenablage kopiere, kann ich wie folgt darauf zugreifen. $ xclip -o -selection clipboard Here's a string I just copied. Wenn ich es einer Variablen zuordne, kann ich es …
Wenn ich ls | grep pngdie Ausgabe von grep mache, ist: 2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png (Dateiname, Newline, Dateiname, Newline) dann echo $(ls | grep png)Ausgaben: 2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png (Dateiname, Leerzeichen von Wortaufteilung, Dateiname, Zeilenumbruch !! von Echo !!) Das ist alles in Ordnung, aber wenn ich dies tue, um die Wortteilung zu verhindern …
Ich habe nur versucht, alle Verzeichnisse und Dateien im aktuellen Verzeichnis aufzulisten und auch zu schreiben, ob es sich um Dateien oder Verzeichnisse handelt, mit dem folgenden Befehl: find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \; Ich weiß, dass es …
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.