Bash-Skript - Versuch, zwei Zeichenfolgen zu verketten - schlägt fehl

Bash-Skript - Versuch, zwei Zeichenfolgen zu verketten - schlägt fehl

Ich möchte ein Skript schreiben, das den aktuellen Ordnernamen übernimmt und am Ende das Suffix _default hinzufügt.

Mein Skript sieht bisher so aus:

#!/usr/bin/env bash
baseDir=pwd | awk -F/ '{print $NF}'
networkName=$(baseDir)$('_default')

echo $networkName

Wenn ich dies ausführe, erhalte ich die folgenden Fehler:

codebrews@mymachine:/docker-local$ ./test.sh
./test.sh: line 3: baseDir: command not found
./test.sh: line 3: _default: command not found

Ich bin sicher, dass ich etwas Einfaches vermassle, aber ich kann es nicht sehen. Danke.

BEARBEITEN 1

Ich habe auch Folgendes versucht:

#!/usr/bin/env bash
baseDir=pwd | awk -F/ '{print $NF}'
networkName=$($baseDir)_default
echo $networkName

Aber das kehrt nur zurück

_Standard

Ich sehe jetzt, dass das Problem darin besteht, dass „basedDir“ leer ist. Wenn ich „pwd | awk -F/ '{print $NF}'“ auf der Kommandozeile ausführe, funktioniert es. Aber in dieser Skriptdatei funktioniert es offensichtlich nicht.

Antwort1

baseDir=pwd | awk -F/ '{print $NF}'

Dieser Befehl weist die Variable baseDirder Zeichenfolge zu pwdund leitet dann die Ausgabe dieser Zuweisung (also nichts) an weiter awk, was nichts bewirkt.

networkName=$(baseDir)$('_default')

Dieser Befehl versucht, die Variable networkNameder Ausgabe des Befehls baseDir(die nicht existiert, daher der erste Fehler) zuzuweisen, verknüpft mit der Ausgabe des Befehls '_default')(die nicht existiert, daher der zweite Fehler).

echo $networkName

Da der vorherige Befehl nicht funktionierte, würde dies nichts anderes als die abschließende neue Zeile ausgeben.

Ich glaube, Sie suchen Folgendes:

#!/usr/bin/env bash
baseDir="$(pwd | awk -F/ '{print $NF}')"
networkName="${baseDir}_default"

echo "$networkName"

verwandte Informationen