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



我有下面的shell脚本。请帮助我理解为什么$mft_dir和$mft_dir1的值不同?

脚本(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

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

最新更新