Als «variable» getaggte Fragen

Eine Variable ist ein Name, der bei korrekter Auswahl mit einer symbolischen Bedeutung einen oder mehrere Werte enthält. Verwenden Sie dieses Tag, wenn Ihre Frage spezifisch für die Verwendung von Variablen in Shell-Skripten ist (wenn Sie nach Variablen in Programmiersprachen fragen möchten, sollten Sie diese wahrscheinlich in StackOverflow stellen).

2
Wie füge ich Variablen in einen String ein, der "" enthält?
Ich möchte eine XML-Zeichenfolge durch Einfügen von Variablen erstellen: str1="Hello" str2="world" xml='<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>' echo $xml Das Ergebnis sollte sein <?xml version="1.0" encoding="iso-8859-1"?><tag1>Hello</tag1><tag2>world</tag2> Aber was ich bekomme ist: <?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2> Ich habe es auch versucht xml="<?xml version="1.0" encoding="iso-8859-1"?><tag1>$str1</tag1><tag2>$str2</tag2>" Aber das entfernt die inneren doppelten Anführungszeichen und gibt: <?xml version=1.0 …
25 bash  shell  variable  xml 



5
Warum doppelte Anführungszeichen in einem [[]] Test verwenden?
Nehmen wir an, wir haben zwei Ganzzahlen in einem Bash-Skript: value1=5 value2=3 Warum müssen wir dann im Falle eines Tests doppelte Anführungszeichen verwenden? Beispielsweise: if [[ "$value1" -eq "$value2" ]] Warum nicht einfach folgendes verwenden? if [[ $value1 -eq $value2 ]] Für mich machen die doppelten Anführungszeichen keinen Sinn.
23 bash  shell  quoting  variable  test 



4
dirname und basename vs parameter expansion
Gibt es einen objektiven Grund, eine Form der anderen vorzuziehen? Leistung, Zuverlässigkeit, Portabilität? filename=/some/long/path/to/a_file parentdir_v1="${filename%/*}" parentdir_v2="$(dirname "$filename")" basename_v1="${filename##*/}" basename_v2="$(basename "$filename")" echo "$parentdir_v1" echo "$parentdir_v2" echo "$basename_v1" echo "$basename_v2" Produziert: /some/long/path/to /some/long/path/to a_file a_file (v1 verwendet die Shell-Parameter-Erweiterung, v2 verwendet externe Binärdateien.)


5
Rohr ordnet Variable zu
Der Einfachheit halber möchte ich tun: echo cart | assign spo; echo $spo Ausgabe: Wagen Existiert eine solche assignAnwendung? Mir sind alle Möglichkeiten bekannt, dies durch Substitution zu erreichen.
19 bash  variable 

2
Festlegen einer Shell-Variablen auf eine Null-Koaleszenz-Weise
Ich mag das "Null-Verschmelzen", bei dem Sie eine Variable auf den ersten "Nicht-Null" -Wert in einer Liste von Dingen setzen können. Viele Sprachen unterstützen dies, zum Beispiel: C #: String myStr = string1 ?? string2 ?? "default"; JavaScript: var myStr = string1 || string2 || "default"; ...etc. Ich bin nur …
19 bash  shell  variable 

1
Warum gibt $ {$ #} dasselbe Ergebnis wie $$ in der Shell zurück?
Bei dem Versuch, den letzten Positionsparameter einzustellen /bin/dash, habe ich es versucht echo ${$#}. Überraschenderweise führte dies nicht zu einem Fehler, sondern zu einer PID, die mit $$variablen Inhalten identisch ist. Frage, warum hat diese Syntax funktioniert? Welche Syntaxregel hat die Shell hier angewendet? Grundsätzlich habe ich getan $ set …
18 shell  variable 

3
Warum schlagen Optionen in einer Variablen in Anführungszeichen fehl, funktionieren aber, wenn sie nicht in Anführungszeichen stehen?
Ich habe darüber gelesen, dass ich Variablen in bash zitieren sollte, zB "$ foo" anstelle von $ foo. Beim Schreiben eines Skripts stieß ich jedoch auf einen Fall, in dem es ohne Anführungszeichen, jedoch nicht mit diesen funktioniert: wget_options='--mirror --no-host-directories' local_root="$1" # ./testdir recieved from command line remote_root="$2" # ftp://XXX …


4
kürzeste Möglichkeit, Zeichen in einer Variablen zu ersetzen
Es gibt viele Möglichkeiten, Zeichen in einer Variablen zu ersetzen. Der kürzeste Weg, den ich herausgefunden habe, ist trbisher: OUTPUT=a\'b\"c\`d_123and_a_lot_more OUTPUT=$(echo "$OUTPUT"|tr -d "'\`\"") echo $OUTPUT Gibt es einen schnelleren Weg? Und dann ist dies unter Angabe sicher für Angebote wie ', "und `selbst?
18 bash  string  variable 

3
Shell-Variablen für Befehlsoptionen verwenden
In einem Bash-Skript versuche ich, die von mir verwendeten Optionen rsyncin einer separaten Variablen zu speichern . Dies funktioniert gut für einfache Optionen (wie --recursive), aber ich habe Probleme mit --exclude='.*': $ find source source source/.bar source/foo $ rsync -rnv --exclude='.*' source/ dest sending incremental file list foo sent 57 …
18 bash  variable 

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.