输出/ echo字符串没有引号

时间:2016-06-22 04:55:12

标签: bash shell unix pipe echo

有没有办法可以在不使用单引号或双引号的情况下回显字符串。这是我的问题。

如果我有一个包含以下内容的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

2 个答案:

答案 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 。)