有没有办法可以在不使用单引号或双引号的情况下回显字符串。这是我的问题。
如果我有一个包含以下内容的bash脚本,它将按预期工作。
./node_modules/.bin/json -I -f ./test.json -e 'console.log("thomas")'
我试图使用那些确切的代码,我无法以任何方式改变它。我试图在一个命令中将其作为一个字符串执行。
我尝试用单引号和双引号包装字符串到echo,它没有正确执行,因为代码有单引号和双引号。
echo './node_modules/.bin/json -I -f ./test.json -e 'console.log("thomas")'' | sh
echo "./node_modules/.bin/json -I -f ./test.json -e 'console.log("thomas")'" | sh
有没有办法可以在一行中执行上面的代码并将其传递给sh
?
答案 0 :(得分:1)
几乎可以肯定最容易逃脱双引号:
echo "./node_modules/.bin/json -I -f ./test.json -e 'console.log(\"thomas\")'" | sh
或者做:
sh << EOF
./node_modules/.bin/json -I -f ./test.json -e 'console.log("thomas")'
EOF
答案 1 :(得分:0)
你可以将一个字符串变量拼凑在一起:
# Open and read the file as a single buffer
fd = open('prob.sql', 'r')
sqlFile = fd.read()
fd.close()
编辑:哎呀,我错过了“一行”部分。我不知道你为什么要这样,但我猜你可以将它们串在一起:
PARM=('ENVAR("_CEE_ENVFILE=DD:STDENV")/')
(如果您希望它更短一点,您可以执行a='./node_modules/.bin/json -I -f ./test.json -e '
b='console.log("thomas")'
c=$a"'"$b"'"
echo $c | sh
并且永远不会定义a='./node_modules/.bin/json -I -f ./test.json -e '; b='console.log("thomas")'; c=$a"'"$b"'"; echo $c | sh
。)