[英]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.