我有以下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
答案 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'