Estou tentando comparar meu diretório de trabalho com um diretório correto a partir do qual o script precisa ser executado. Aqui está um trecho do shell script
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
Neste caso, garanti que estou em /proj/project_a/scripts_shell (como meu diretório de trabalho atual), mas por algum motivo não é possível detectar isso na instrução if. Portanto, não está imprimindo a mensagem.
O que está errado com isto?
Responder1
Experimente isto:
if [ "$PWD" = "/proj/project_a/scripts_shell" ]; then
echo "You are running the script from the correct directory"
fi
O problema é que quando você faz isso CURR_DIR=echo pwd
, o shell chama pwd
com a variável de ambiente CURR_DIR
definida como echo
. Quando você precisar capturar a saída de um comando em uma variável, basta fazer VAR=$(cmd)
.
Responder2
Esta é uma notação para salvar o resultado do comando em string no BASH
CURR_DIR=$(pwd)
ou
CURR_DIR=`pwd`
Quando você digita CURR_DIR=echo pwd
, cria CURR_DIR
apenas uma string "pwd". É assim que funciona a função echo. Por exemplo, execute a seguinte linha em seu shell
echo blah blah blah
isso não faz nada com o comando blá.