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 pwd
con la variable de entorno CURR_DIR
configurada 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 pwd
eso, crea CURR_DIR
solo 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.