我想創建並使用源Bash腳本的函數中的別名。我遇到了類似於Inception的困難,我會很高興指出如何正確地做到這一點。如何創建並在源Bash腳本的函數中使用別名?
下面是一個示例腳本來源:
#!/bin/bash
myFunction(){
alias zappo="echo"
zappo
}
什麼建議嗎?
我想創建並使用源Bash腳本的函數中的別名。我遇到了類似於Inception的困難,我會很高興指出如何正確地做到這一點。如何創建並在源Bash腳本的函數中使用別名?
下面是一個示例腳本來源:
#!/bin/bash
myFunction(){
alias zappo="echo"
zappo
}
什麼建議嗎?
請注意,別名將具有有限的腳本功能。從Advanced Bash Scripting Guide:
在腳本中,別名的用處非常有限。如果別名可以假定C預處理器的某些功能(如宏擴展),那將會很好,但不幸的是,Bash不會在別名體內擴展參數。 [2]而且,腳本無法在「複合構造」中擴展自身,例如if/then語句,循環和函數。另一個限制是別名不會遞歸地擴展。幾乎總是,無論我們希望別名做什麼都可以通過函數更有效地完成。
我會用這個變量:
myFunction(){
zappo="echo"
$zappo "foo bar"
}
甚至包裝函數:
zappo() {
if [ $1 = 'some value'] ; then
do something
fi
# apply out arguments to echo
echo [email protected]
}
現在這樣稱呼它:
zappo log_info "foo bar"
唯一的原因,我可以看到在'bash'中使用一個函數的別名是別名在某些'readline' comm後會擴展(唯一默認綁定的是'shell-expand-line',C-M-e)。在非交互式shell中,您必須明確啓用別名擴展才能使其工作。只需使用一個功能。 – chepner