为什么 eval 无法创建正确的别名?
Why is eval failing to create the right alias?
我有这个代码:
foo=bar
eval alias $foo="echo $foo"
但别名被创建为
alias bar='echo'
而不是
alias bar='echo bar'
为什么 $foo
没有在别名定义中正确扩展?
你需要:
eval alias bar="\"echo $foo\""
或者只是:
eval alias bar=\"echo $foo\"
重点是将双引号作为文字引号传递给 eval
命令。您可以检查 Bash
将如何解析给定的命令使用
Control-Alt-e 首先调用 shell-expand-line
的键绑定
输入命令:
eval alias bar="\"echo $foo\""
然后执行键绑定而不是 Enter。请注意,如果键入 eval alias $foo="echo $foo"
,则会显示:
eval alias bar=echo bar
但是当输入 eval alias bar=\"echo $foo\"
时会显示:
eval alias bar="echo bar"
我有这个代码:
foo=bar
eval alias $foo="echo $foo"
但别名被创建为
alias bar='echo'
而不是
alias bar='echo bar'
为什么 $foo
没有在别名定义中正确扩展?
你需要:
eval alias bar="\"echo $foo\""
或者只是:
eval alias bar=\"echo $foo\"
重点是将双引号作为文字引号传递给 eval
命令。您可以检查 Bash
将如何解析给定的命令使用
Control-Alt-e 首先调用 shell-expand-line
的键绑定
输入命令:
eval alias bar="\"echo $foo\""
然后执行键绑定而不是 Enter。请注意,如果键入 eval alias $foo="echo $foo"
,则会显示:
eval alias bar=echo bar
但是当输入 eval alias bar=\"echo $foo\"
时会显示:
eval alias bar="echo bar"