我有一个简单的bash脚本在服务器上运行参数作为命令,我需要在另一台服务器上创建所需的命令作为字符串并尝试远程执行它。
PROFILE=/coremedia/home/picroot/.profile
source $PROFILE
cmd=$1
shift
eval $cmd "$@"
我发送给脚本的参数:
/coremedia/pic-cms-tools/bin/cm publish -u admin -p admin -t "/Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsConvAlone" "/Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsForcedAlone
“
当我在本地运行scriipt时的调试屏幕,与''
标志完美配合..
/coremedia/pic-cms-tools/bin/cm publish -u admin -p admin -t '/Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsConvAlone' '/Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsForcedAlone'
当我通过带有反引号的ssh运行相同的脚本时使用$cmd
上方的相同参数:
@lines = `ssh "$user"@"$host" "bash -x myscript.sh $cmd"`;
调试屏幕向我显示运行命令,如:
/coremedia/pic-cms-tools/bin/cm publish -u admin -p admin -t /Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsConvAlone /Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsForcedAlone
没有''
标志。为什么要更改参数?
我已经尝试了很多配置来处理字符串,但我仍然无法找到解决方案,显然我错过了一个小小的关键...
任何帮助将不胜感激,非常感谢提前!
答案 0 :(得分:1)
你试图逃避你的报价吗?
/coremedia/pic-cms-tools/bin/cm publish -u admin -p admin -t \"/Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsConvAlone\" \"/Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsForcedAlone\"
你也可以尝试这样的事情:
/coremedia/pic-cms-tools/bin/cm publish -u admin -p admin -t "'/Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsConvAlone'" "'/Config/Static Texts/PDF Texts/pdf.eudatasheet.ocEnergyConsForcedAlone'"