我有一个包含大量配置文件的目录,它们看起来像这样:
us-sfo-building1.foo us-sfo-building1.bar mx-mex-building15.foo mx-mex-building15.bar
现在,我想执行一个脚本,它将us-sfo-building1.foo和us-sfo-building1.bar作为输入参数。
我基本上想要这个:./ script $ .foo $ .bar但我必须确保我总是有匹配的foo和bar对,否则脚本会抱怨。我尝试过这个,但它没有按预期工作:
#/bin/bash
for x in "*.foo*; do
x=${x%.foo}
if [ -e "$x.bar" ]; then
./script "$x.foo" "$x.bar"
fi
done
有关如何解决这个或我的错误的想法?
答案 0 :(得分:1)
for x in "*.foo*; do
不需要"
。
<强>修正:强>
#/bin/bash
for x in *.foo; do
x=${x%.foo}
if [ -e "$x.bar" ]; then
./script "$x.foo" "$x.bar"
fi
done
并提出建议(包括首选使用[[ ]]
):
#/bin/bash
for x in *.foo; do
y=${x%.foo}.bar
[[ -e $y ]] && ./script "$x" "$y"
done