Como comparar os dois caminhos de arquivo no shell script

Como comparar os dois caminhos de arquivo no shell script

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 pwdcom a variável de ambiente CURR_DIRdefinida 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_DIRapenas 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á.

informação relacionada