Col*_*e C 4 bash alias shell-script
我在 bash 脚本中发现了这种奇怪的行为。
#!/bin/bash
V=a
alias $V="echo test"
echo $(a) #returns 'test'
echo $($V) #returns ...'a: not found'
Run Code Online (Sandbox Code Playgroud)
有没有办法用变量模拟以前的行为?
只有当命令直接出现在代码中时,别名才会被扩展,没有任何扩展。编写诸如\a
、$V
、$(echo a)
等内容会抑制别名查找。
此外,庆典(不像其他壳)不会扩大默认脚本别名无论如何,所以a
实际上并没有在bash运行别名。
使用函数而不是别名。您需要使用原始名称来定义函数。
V=a
a () { echo test; }
"$V" # prints test
Run Code Online (Sandbox Code Playgroud)
(还有其他方法可以通过使用eval
来做您想做的事情,但eval
除非您确切地知道自己在做什么,否则不要使用。正确引用事物 witheval
是很棘手的。)