我有下面的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'