在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
mimanzhou 回答:在shell脚本中读取属性文件时出现问题

#! /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:使用$()而不是反引号:-)

做得很好 ,

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

sed -e 's/\r//g'
本文链接:https://www.f2er.com/3151875.html

大家都在问