Bash
在bash中對變數執行別名
我在我的 bash 腳本中遇到了這種奇怪的行為。
#!/bin/bash V=a alias $V="echo test" echo $(a) #returns 'test' echo $($V) #returns ...'a: not found'
有沒有辦法用變數來模擬前一種行為?
只有當命令直接出現在程式碼中時,別名才會被擴展,而不需要任何擴展。編寫諸如
\a
,$V
,$(echo a)
等之類的內容會抑制別名查找。此外,bash(與其他 shell 不同)預設情況下不會在腳本中擴展別名,因此
a
實際上不會在bash 中執行別名。使用函式而不是別名。您需要使用原始名稱來定義函式。
V=a a () { echo test; } "$V" # prints test
(還有其他方法可以通過使用來做你想做的事情,但除非你確切地知道你在做什麼,否則
eval
不要使用。正確引用事情是很棘手的。)eval``eval