我正在 Linux 上的 bash 脚本中尝试以下操作:
envA="prdk8s--staging-a"
envB="prd-k8s--sandbox"
for envCode in $envA $envB;
do
Code=$(echo $envCode | cut -d "--" -f 1)
echo $Code
done
但是,这失败了:
cut: the delimiter must be a single character
Try 'cut --help' for more information.
预期输出:
staging
sandbox
有没有办法打印变量值 $envA 和 $envB 中“--”之后的下一个单词?
答案1
您可以使用 shell 自己的参数扩展来修剪前导和尾随组件:
for envCode in "$envA" "$envB"; do
t=${envCode#*--}
printf '%s\n' "${t%-*}"
done
staging
sandbox
如果你想删除##
,你可以使用%%
最长而不是最短前导和尾随匹配 - 从您的示例中不清楚这是必需的。
参见示例BashGuide:参数扩展