私は一緒に働いていますクベックテルそしてzshでは、名前空間フラグを環境変数に保存したいと思います。
以下を書く代わりに:
kubectl get pods -n mynamespace
私はこのようなことをしたい:
n='-n mynamespace'
kubectl get pods $n
しかし、これを行うと、次のような結果が得られます。
No resources found in mynamespace namespace.
in
単語と間にスペースが2つあることに注意してくださいmynamespace
。
を実行するとkubectl get pods -n mynamespace
正しい出力が得られます。
NAME READY STATUS RESTARTS AGE
nginx 1/1 Running 0 16m
ここで何が起こるのか?in
単語と出力の間にスペースが2つあるのはなぜですかmynamespace
?環境変数に名前空間フラグを格納するには?
ベストアンサー1
zsh は変数に対してトークン化を実行しませんが、その値を単一の引数として渡します。これにはkubectlはありませんが、mkdirなどの項目を使用して動作を再現できます。
var='-p a/b/c/d'
comp% mkdir $var
mkdir: invalid option -- ' '
Try 'mkdir --help' for more information.
以下を使用して同じエラーを呼び出すことができます。
comp% mkdir '-p a/b/'
mkdir: invalid option -- ' '
Try 'mkdir --help' for more information.
zshが実際に何をしているのかを見ることができますstrace -f mkdir $var
:
execve("/usr/bin/mkdir", ["mkdir", "-p a/b/c/d"], 0x7ffce5e6afb0 /* 61 vars */) = 0
提案に従ってくださいこの回答では たとえば、単語分割を有効にする必要があります。
comp% mkdir -p ${=var}
あなたの場合は次のとおりです。
kubectl get pods ${=n}