[英]Using function parameters in a bash script alias
我有一個 bash 腳本,我想為其添加一個別名,該腳本使用一些函數參數。 但是,由於某種原因,當我使用傳遞的參數時,該命令不起作用。
我的別名:
alias pa='_pa() { php artisan "$1" "$2" "$3" "$4" "$5"; }; _pa'
哪個應該可以合並php artisan cache:clear
到pa cache:clear
但是,這給了我一個輸入提示,而不是預期的命令: php artisan cache:clear
為什么我無法使用此功能創建別名?
你為什么這樣做? 只需將別名更改為:
alias pa='php artisan'
或者完全扔掉別名,只使用一個函數?
pa() {
php artisan "$@"
}
使用"$@"
將擴展到與您發送給pa
一樣多的參數
別名不帶參數。 如果你有一個別名foo
並寫
foo x y z
shell 只是將foo擴展到您定義的任何內容,例如,如果
alias foo='bar baz'
,上面的行將變成
bar baz x y z
這就是為什么它在手冊頁中被稱為別名擴展而不是別名調用。
此外,您的別名pa
毫無意義。 除了定義一個名為 _pa 的函數然后調用它之外,它什么都不做。 因此,如果在您的 shell 中之前沒有定義過此名稱的函數,請執行
pa 10 20 30 40 50
擴展為
_pa() {
php artisan "$1" "$2" "$3" "$4" "$5"
}
_pa 10 20 30 40 50
從而導致函數 _pa 出現並調用這個函數。 由於我們有別名擴展,那些剩余的參數 (10, 20,...) 被附加到該行並最終作為函數 _pa 的參數。
基本上,每次重復使用別名pa
,您都會丟棄舊的_pa
並重新創建它。 不禁止這樣做,但更簡潔的解決方案是單獨定義函數,如果您出於任何原因想要為該函數使用第二個名稱,請在以下定義別名:
_pa() {
php artisan "$1" "$2" "$3" "$4" "$5"
}
alias pa=_pa
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.