Cara membandingkan dua jalur file dalam skrip shell


3

Saya mencoba membandingkan direktori kerja saya dengan direktori yang benar dari mana skrip perlu dijalankan. Berikut ini cuplikan skrip 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

Dalam hal ini saya memastikan bahwa saya berada di / proj / project_a / scripts_shell (sebagai direktori kerja saya sekarang) tetapi untuk beberapa alasan tidak dapat mendeteksi ini dalam pernyataan if. Dengan demikian tidak mencetak pesan.

apa yang salah dengan ini?

Jawaban:


5

Coba ini:

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

Masalahnya adalah ketika Anda melakukannya CURR_DIR=echo pwd, shell panggilan pwddengan variabel lingkungan CURR_DIRdiatur ke echo. Ketika Anda perlu menangkap output dari suatu perintah dalam suatu variabel, lakukan saja VAR=$(cmd).


0

Ini adalah notasi untuk menyimpan hasil perintah ke dalam string di BASH

CURR_DIR=$(pwd)

atau

CURR_DIR=`pwd`

Ketika Anda mengetik CURR_DIR=echo pwditu CURR_DIRhanya membuat string "pwd". Ini adalah cara kerja gema. Misalnya, jalankan baris berikut di shell Anda

echo blah blah blah 

ini tidak melakukan apa-apa dengan perintah bla.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.