【发布时间】:2021-04-16 15:39:39
【问题描述】:
我在远程机器上有一个脚本,其中包含如下 for 循环:
#!/bin/bash -eux
# execute build.sh in each component
for f in workspace/**/**/build.sh ; do
echo $f
REPO=${f%*build.sh}
echo $REPO
git -C ./$REPO checkout master
git -C ./$REPO pull origin master
$f
done
此脚本正在查找所有包含 build.sh 文件的存储库,提取最新更改并构建它们。
当我在机器上执行脚本时效果很好,但是当我尝试远程触发这个脚本时,for 循环只运行一次,我看到它返回一个实际上根本没有 build.sh 的 repo:
$ ssh devops "~/build.sh"
+ for f in workspace/**/**/build.sh
+ echo 'workspace/**/**/build.sh'
+ REPO='workspace/**/**/'
+ echo workspace/core/auth/
workspace/**/**/build.sh
workspace/core/auth/
+ git -C ./workspace/core/auth/ checkout master
Already on 'master'
Your branch is up to date with 'origin/master'.
+ git -C ./workspace/core/auth/ pull origin master
From https://gitlabe.com/workspace/core/auth
* branch master -> FETCH_HEAD
Already up to date.
+ 'workspace/**/**/build.sh'
/home/devops/build.sh: line 10: workspace/**/**/build.sh: No such file or directory
我试图制作一个单行的 for 循环并使用 ssh,但这也没有用。我该如何解决这个问题?
【问题讨论】:
标签: linux bash shell for-loop ssh