Como comparar os dois caminhos de arquivo no shell script

3

Estou tentando comparar meu diretório de trabalho com um diretório correto do qual o script precisa ser executado. Aqui está um trecho de 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

Neste caso, assegurei-me de que eu estivesse em / proj / project_a / scripts_shell (como meu diretório de trabalho atual), mas, por algum motivo, ele não é capaz de detectar isso na instrução if. Portanto, não está imprimindo a mensagem.

O que há de errado com isso?

    
por user202636 27.02.2013 / 06:06

2 respostas

5

Tente 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ê executa CURR_DIR=echo pwd , o shell chama pwd com a variável de ambiente CURR_DIR definida como echo . Quando você precisa capturar a saída de um comando em uma variável, basta fazer VAR=$(cmd) .

    
por 27.02.2013 / 06:11
0

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 , isso faz com CURR_DIR apenas uma string "pwd". É assim que funciona a função de eco. Por exemplo, execute a seguinte linha no seu shell

echo blah blah blah 

isto não faz nada com o comando blah.

    
por 27.02.2013 / 07:17

Tags