【发布时间】:2021-04-14 10:31:32
【问题描述】:
使用 busybox 和 ash 运行基于图像的 alpine:
/mnt/builddir/code/src/main/helm # busybox | head -1
BusyBox v1.31.1 () multi-call binary.
我编写了一个 sh 脚本,该脚本仅在文件名以前缀“values”开头时才打印文件名,但带有“if”条件的东西不能正常工作。这是我的脚本:
for f in ./*
do
echo ${f##*/}
if ${f##*/} == 'values'*; then
echo $f
fi
done
输出:
/mnt/builddir/code/src/main/helm # ./script.sh
Chart.yaml
./script.sh: line 4: Chart.yaml: not found
script.sh
./script.sh: line 4: script.sh: not found
values-feature.yaml
./script.sh: line 4: values-feature.yaml: not found
values-int.yaml
./script.sh: line 4: values-int.yaml: not found
values-prod.yaml
./script.sh: line 4: values-prod.yaml: not found
values-stg.yaml
./script.sh: line 4: values-stg.yaml: not found
values.yaml
./script.sh: line 4: values.yaml: not found
在我将代码更改为上述代码之前,if 条件如下所示:
if [[ ${f##*/} == values* ]]
then
...
但这也不起作用。
感谢您的建议...
【问题讨论】:
-
您的问题自相矛盾:您将其标记为 bash,但在标题中您写了“sh”。对于 bash,
[[ ${f##*/} == values* ]]是有意义的;对于sh显然不是。此外,效果不佳和也无效是轶事证据,但不是问题描述。