在shell脚本中读取属性文件时出现问题

时间:2019-11-06 13:17:31

标签: bash shell

我有以下shell脚本。请帮助我了解为什么$ 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 个答案:

答案 0 :(得分:1)

#! /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 ---------------------

请注意,我添加了>><<字符以查看echo命令的确切输出。

注意2:某些系统可能需要#!/usr/bin/bash。根据您的系统进行调整({which bash会向您显示它的位置)。

注意3:请不要在#!与您的shell路径之间放置空格。

注意4:使用$()而不是反引号:-)

做得很好

答案 1 :(得分:0)

我使用以下sed命令剥离回车符,问题得到解决:

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