脚本如下:
a=`sed '/^project_folder=/!d;s/.*=//' conf.ini | tr -d '\r'`
b=`sed '/^version.versionLicense=/!d;s/.*=//' conf.properties`
path=${a}/${b}/env/123456/bin
echo $path
conf.ini的内容为project_folder=/data/AUTO-PUBLISH/iPEMS_01
conf.properties的内容为version.versionLicense=3.1.0.3
输出为/env/123456/binISH/iPEMS_01/3.1.0.3
我的预期输出为/data/AUTO-PUBLISH/iPEMS_01/3.1.0.3/env/123456/bin
为什么会这样?
答案 0 :(得分:1)
你不应该使用sed
来做你正在做的事情grep就足够了,你可以在下面看到:
$ more conf.properties conf.ini
::::::::::::::
conf.properties
::::::::::::::
version.versionLicense=3.1.0.3
::::::::::::::
conf.ini
::::::::::::::
$ grep -oP '(?<=^project_folder=).*' conf.ini | tr -d '\r'
/data/AUTO-PUBLISH/iPEMS_01
$ grep -oP '(?<=version\.versionLicense=).*' conf.properties | tr -d '\r'
3.1.0.3
您的脚本变为:
a=$(grep -oP '(?<=^project_folder=).*' conf.ini | tr -d '\r')
b=$(grep -oP '(?<=version\.versionLicense=).*' conf.properties | tr -d '\r')
path=${a}/{$b}/env/123456/bin
echo $path
输出是:
/data/AUTO-PUBLISH/iPEMS_01/{3.1.0.3}/env/123456/bin
答案 1 :(得分:0)
conf.properties将有\ r \ n,它现在将成为$ path的一部分。