问题描述
是否可以在使用别名的命令末尾使用别名。 完整的命令将是:
kubectl delete pod Nginx --grace-period=0 --force
这些是我的别名:
alias k=kubectl
alias gpf="--grace-period=0 --force"
我想将两个别名组合成这样:
k delete pod Nginx gpf
解决方法
别名不是宏;它替代命令。 --grace-period=0
不是命令,“别名的组合”将不起作用。
此外,您的两个命令均未定义别名。别名由
定义alias NAME='command to execute'
您缺少alias
关键字。因此,您对gpf
和k
的定义不是定义别名,而是定义shell变量。
不过,您对gpf
的定义可能会很有用,因为您可以在其中使用它。
kubectl $gpf
,
以下shell函数具有您所要求的行为:
k() {
local -a args=( kubectl ) # initialize argument list to "kubectl"
for arg do # iterate over each funtion argument
if [[ $arg = gpf ]]; then # if that argument is "gpf"...
args+=( --grace-period=0 --force ) # ...append the specific arguments we want
else
args+=( "$arg" ) # otherwise,just append what we were given
fi
done
"${args[@]}" # then run our list as a command.
}
,
k delete pod nginx gpf --> 这确实有效,但会引发错误。
如果您仔细注意,删除 pod 不会花费太多时间。
错误说没有名为“gpf”的 pod,不确定 kubectl 是否假定 gpf 是一个 pod,因为它已经替换了该值。