Проблема при чтении файла свойств в сценарии оболочки - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть скрипт ниже. Пожалуйста, помогите мне понять, почему значения $ mft_dir и $ mft_dir1 различаются?

SCRIPT (test.sh)

#! /bin/sh

######## Reading properties file
function getProperty {
    awk -F'=' -v k="$1" '$1==k&&sub(/^[^=]*=/,"")' $ENVIRONMENTROOT/properties/ExtServerConnection.properties
}

key=$2  
######################## LOCAL Server Details ##########################
########MFT path
mft_dir=$(getProperty "${key}_mft_dir")  
mft_dir1="/sjcqa01/exec/ENVIRONMENTROOT/EAIDATA/Inbound/MFT/EXL"    
echo $mft_dir  
echo $mft_dir1

if [ "$mft_dir" != "$mft_dir1" ] ; then  
    echo "Not equal"  
fi  
echo "------------------ END OF THE SCRIPT ---------------------"

Свойства файла Запись

XYZ_mft_dir=/sjcqa01/exec/ENVIRONMENTROOT/EAIDATA/Inbound/MFT/EXL

Команда выполнения

./test.sh -key XYZ

Выход

/Inbound/MFT
/Inbound/MFT 
Not equal

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Замените строку #! /bin/sh на #!/bin/bash. Я сделал это с вашим кодом, и он работал отлично.

./so.bash -key XYZ
>>/sjcqa01/exec/ENVIRONMENTROOT/EAIDATA/Inbound/MFT/EXL<<
>>/sjcqa01/exec/ENVIRONMENTROOT/EAIDATA/Inbound/MFT/EXL<<
------------------ END OF THE SCRIPT ---------------------

Примечание. Я добавил символы >> и <<, чтобы увидеть точный вывод команд эха.

Примечание2: некоторыесистемы могут потребовать #!/usr/bin/bash. Настройте в соответствии с вашей системой (which bash покажет вам, где она находится).

Примечание3: не ставьте пробел между #! и вашим путем оболочки.

Примечание4: хорошо сделано, используя$() а не кавычки: -)

0 голосов
/ 11 ноября 2019

Я использовал следующую команду sed для удаления возврата каретки, и моя проблема была решена:

sed -e 's/\r//g'
...