Cómo comparar las dos rutas de archivos en el script de shell

Cómo comparar las dos rutas de archivos en el script de shell

Estoy intentando comparar mi directorio de trabajo con un directorio correcto desde el cual debe ejecutarse el script. Aquí hay un fragmento del script de shell

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

En este caso, me aseguré de estar en /proj/project_a/scripts_shell (como mi directorio de trabajo actual) pero por alguna razón no puedo detectar esto en la declaración if. Por lo tanto, no imprime el mensaje.

¿Qué hay de malo en esto?

Respuesta1

Prueba esto:

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

El problema es que cuando lo hace CURR_DIR=echo pwd, el shell llama pwdcon la variable de entorno CURR_DIRconfigurada en echo. Cuando necesites capturar la salida de un comando en una variable, simplemente hazlo VAR=$(cmd).

Respuesta2

Esta es una notación para guardar el resultado del comando en una cadena en BASH.

CURR_DIR=$(pwd)

o

CURR_DIR=`pwd`

Cuando escribe CURR_DIR=echo pwdeso, crea CURR_DIRsolo una cadena "pwd". Así es como funciona la función de eco. Por ejemplo, ejecute la siguiente línea en su shell

echo blah blah blah 

esto no hace nada con el comando bla.

información relacionada