我只是想知道如何在单引号内回显一个变量(我使用单引号,因为字符串中有引号)。
echo 'test text "here_is_some_test_text_$counter" "output"' >> ${FILE}
任何帮助将不胜感激
答案 0 :(得分:33)
变量以双引号字符串扩展,但不在单引号字符串中扩展:
$ name=World
$ echo "Hello $name"
Hello World
$ echo 'Hello $name'
Hello $name
如果您只需切换引号,请执行此操作。
如果你更喜欢使用单引号来避免额外的转义,你可以在同一个参数中混合和匹配引号:
$ echo 'single quoted. '"Double quoted. "'Single quoted again.'
single quoted. Double quoted. Single quoted again.
$ echo '"$name" has the value '"$name"
"$name" has the value World
适用于您的案件:
echo 'test text "here_is_some_test_text_'"$counter"'" "output"' >> "$FILE"
答案 1 :(得分:7)
使用printf:
printf 'test text "here_is_some_test_text_%s" "output"\n' "$counter" >> ${FILE}
答案 2 :(得分:4)
使用heredoc:
cat << EOF >> ${FILE}
test text "here_is_some_test_text_$counter" "output"
EOF
答案 3 :(得分:2)
最具可读性的功能方法是在双引号内使用花括号。
'test text "here_is_some_test_text_'"${counter}"'" "output"' >> "${FILE}"
答案 4 :(得分:0)
你可以这样做:
app.set("view engine", "ejs");
<强>解释强>: Eval命令将字符串作为命令处理,因此在正确的转义量之后它将产生所需的结果。
它表示执行以下字符串作为命令:
app.js
再次命令一行:
TypeError: Router.use() requires middleware function but got a string
at Function.use (/private/tmp/node_modules/express/lib/router/index.js:458:13)
at EventEmitter.<anonymous> (/private/tmp/node_modules/express/lib/application.js:220:21)
at Array.forEach (native)
at EventEmitter.use (/private/tmp/node_modules/express/lib/application.js:217:7)
at Object.<anonymous> (/private/tmp/t/app.js:5:5) <--- there!
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
答案 5 :(得分:0)
输出用单引号包装的变量:
printf "'"'Hello %s'"'" world
答案 6 :(得分:-1)
使用子shell:
var='hello' echo 'blah_'`echo $var`' blah blah';