shell 将输出作为变量并在命令中使用

hgqdbh6s  于 2023-06-06  发布在  Shell
关注(0)|答案(1)|浏览(206)

我写了一个简单的shell脚本来列出一些东西,并基于pattern执行grep:

kubectl get virtualservice -A | grep '*' | while read -r line ; do
    echo "$line"
done

line输出为:

whatsapp-business       whatsapp-business-web      ["istio-system/istio-ingressgw"]   ["*"]          374d

我想获取第一个和第二个参数,以传递如下命令:

kubectl get virtualservice -A | grep '*' | while read -r line ; do
    echo "$line"
    # kubectl delete virtualservice whatsapp-business-web -n whatsapp-business
    # that line should be dynamic based on $line
done

你知道我该怎么做吗?我对shell脚本有点陌生。

tez616oj

tez616oj1#

要从行中提取第一个和第二个参数并在脚本中动态使用它们,可以使用shell字符串操作。以下是您的脚本的更新版本:

kubectl get virtualservice -A | grep '*' | while read -r line ; do
    echo "$line"
    first_param=$(echo "$line" | awk '{print $1}')
    second_param=$(echo "$line" | awk '{print $2}')
    kubectl delete virtualservice "$second_param" -n "$first_param"
done

在这个脚本中,我们使用awk从使用空格作为分隔符的行中提取第一个和第二个参数。first_param变量存储第一个参数,second_param变量存储第二个参数。然后,您可以在kubectl delete命令中动态使用这些变量来删除虚拟服务。

相关问题