我想在bash中使用这样的东西:
alias foo='bar="$(echo hello world | grep \"hello world\")"; echo $bar;'; foo
预期输出:hello world
输出:grep:world“:没有这样的文件或目录
外部引号必须是单引号,双引号$ bar将为空。
下一个引号必须是双引号,单引号$()不会展开。
内部引号可以是两种引号,但单引号不允许在其中引用单引号。
如何实现这一目标?
答案 0 :(得分:34)
$()
内的内容代表子shell,因此您可以在内部放置未转义的双引号
alias foo='bar="$(echo testing hello world | grep "hello world")"; echo "$bar"'
答案 1 :(得分:5)
有点不清楚“像这样的东西”意味着什么,但实现这里似乎重点的最简单方法是一个简单的功能:
foo() {
echo 'hello world' | grep 'hello world'
}
foo
答案 2 :(得分:1)
逃离空间
alias foo='bar="$(echo hello world | grep hello\ world)"; echo $bar;'
答案 3 :(得分:0)
$()
周围的双引号不是必需的:
alias foo='bar=$(echo hello world | grep "hello world"); echo $bar;'
foo
# Output:
hello world