Mein Shell-Skript gibt mir die falsche Ausgabe

1612
Purpe_Fedora

Ich habe ein Skript erstellt, das (im unteren Abschnitt) den Namen und den Ort der entsprechenden Werte in einer zugewiesenen Variablen speichern und dann die Namensvariablen in einer Spalte auflisten soll. Ich habe das schon früher erfolgreich gemacht, aber aus irgendeinem Grund bekomme ich nur leere Zeilen. Bitte helfen Sie mir, denn ich kann dieses Problem nicht zu Kopf oder Ende machen.

#This is where sections are added or removed #SECTIONnumberNAME=$(echo "number: section name") #SECTIONnumberLOCARION=./Setup_Fedora_Sections/section_name.sh  SECTION1NAME=$(echo "1: Wireless Card") SECTION1LOCARION=./Setup_Fedora_Sections/Setup_Fedora_Wireless_Card.sh SECTION2NAME=$(echo "2: Basic Setup") SECTION2LOCARION=./Setup_Fedora_Sections/Setup_Fedora_Basic_Setup.sh SECTION3NAME=$(echo "3: Optional Programs") SECTION3LOCARION=./Setup_Fedora_Sections/Setup_Fedora_Optional_Programs.sh  #This is where selection offers are added or removed #echo $'\n'$SELECTIONnumberNAME echo $'\n'$SELECTION1NAME echo $'\n'$SELECTION2NAME echo $'\n'$SELECTION3NAME 
0
Warum würden Sie jemals `variable = $ (Echo Text)` anstelle von 'Variable = Text' verwenden? AFH vor 7 Jahren 0
Oft ist es angenehm, den Variablennamen immer zu kopieren (und nie), um Fehler zu vermeiden ... Sie drucken leere Variablen (`$ SE` LE`CTIONxNAME` und nicht `$ SECTIONxNAME`). Um ein Skript zu debuggen, können Sie am Anfang (und am Ende) des zu debuggenden Teils `set -` (und` set + `) schreiben. Hastur vor 7 Jahren 0

1 Antwort auf die Frage

1
DKing

Möglicherweise möchten Sie versuchen, den Text "SELECTION" im späteren Teil des Skripts in "SECTION" zu ändern, damit er zum ersten Teil des Skripts passt. Es sieht nach einem einfachen Rechtschreibproblem aus. Also das funktioniert für mich:

#This is where selection offers are added or removed #echo $'\n'$SELECTIONnumberNAME echo $'\n'$SECTION1NAME echo $'\n'$SECTION2NAME echo $'\n'$SECTION3NAME 
Wow, danke, dass es mir so leicht fällt, diese Unterschiede zu übersehen. Purpe_Fedora vor 7 Jahren 0
Nur aus Neugier gibt es eine Möglichkeit, die obige Korrektur in eine Variable umzuwandeln und sie auf dieselbe Weise und nicht in einer Zeile anzuzeigen? Purpe_Fedora vor 7 Jahren 0
Es gibt wahrscheinlich mehrere Änderungen, die ich persönlich vornehmen würde, wenn dies mein Code wäre. Zuerst würde ich mit der Empfehlung von AFH gehen und einfach `variable =" value "` verwenden. Aber ich denke, das, wonach Sie suchen, wäre ein Array. Beim Echo würde ich nicht '$' \ n '' machen, sondern etwas wie 'echo -e "\ n $ variable1 \ n $ variable2 \ n" `. DKing vor 7 Jahren 0
Was ist der Unterschied zwischen den beiden Methoden? Purpe_Fedora vor 7 Jahren 0
Der erste ist offensichtlicher. Das direkte Zuweisen von Text zu einer Variablen ist einfach und schnell. Der Versuch, eine Subshell zu erstellen und einen separaten Befehl auszuführen, und dann die Ausgabe in die Variable zu leiten, beansprucht Ressourcen, und das Schreiben dauert länger. Was den letzten Teil betrifft, so ist dies nur Bequemlichkeit und Vorliebe. Anstatt mehrere Befehle zu haben, können Sie einen haben, und Sie benötigen nur eine einzige Zeichenfolge. Es sind auch weniger Zeichen einzugeben. DKing vor 7 Jahren 0