So vergleichen Sie die beiden Dateipfade im Shell-Skript

So vergleichen Sie die beiden Dateipfade im Shell-Skript

Ich versuche, mein Arbeitsverzeichnis mit einem korrekten Verzeichnis zu vergleichen, aus dem das Skript ausgeführt werden muss. Hier ist ein Ausschnitt des Shell-Skripts

CURR_DIR=echo pwd
echo $CURR_DIR
if [ "$CURR_DIR" == "/proj/project_a/scripts_shell" ]; then
    echo "You are running script from correct directory"
fi

In diesem Fall habe ich sichergestellt, dass ich mich in /proj/project_a/scripts_shell (als meinem aktuellen Arbeitsverzeichnis) befinde, aber aus irgendeinem Grund kann dies in der if-Anweisung nicht erkannt werden. Daher wird die Meldung nicht gedruckt.

Was ist daran falsch?

Antwort1

Versuche dies:

if [ "$PWD" = "/proj/project_a/scripts_shell" ]; then
    echo "You are running the script from the correct directory" 
fi

Das Problem besteht darin CURR_DIR=echo pwd, dass die Shell beim Aufrufen pwddie Umgebungsvariable CURR_DIRauf gesetzt hat echo. Wenn Sie die Ausgabe eines Befehls in einer Variablen erfassen müssen, führen Sie einfach aus VAR=$(cmd).

Antwort2

Dies ist eine Notation zum Speichern des Befehlsergebnisses in einer Zeichenfolge in BASH

CURR_DIR=$(pwd)

oder

CURR_DIR=`pwd`

Wenn Sie CURR_DIR=echo pwddas eingeben, wird CURR_DIRnur eine "pwd"-Zeichenfolge erstellt. So funktioniert die Echo-Funktion. Führen Sie beispielsweise die folgende Zeile in Ihrer Shell aus

echo blah blah blah 

dies hat keine Wirkung auf den Blabla-Befehl.

verwandte Informationen