从bash脚本以编程方式运行“exec”

从bash脚本以编程方式运行“exec”,bash,docker,singularity-container,Bash,Docker,Singularity Container,我想在各种图像中执行一个命令。我对bash循环使用一个简单的 for i in `ls *.sif` do singularity exec $i cat /etc/os-release done 我希望脚本打印该目录中所有映像的操作系统发布信息。相反,它打印第一个的信息并返回提示。如果我运行fg命令,将执行下一个图像中的命令,依此类推。对于n image,我必须运行fg命令n-1次 有趣的是,如果我用timeout 10 singularity exec$I cat/etc/os re

我想在各种图像中执行一个命令。我对bash循环使用一个简单的

for i in `ls *.sif`
do
   singularity exec $i cat /etc/os-release
done
我希望脚本打印该目录中所有映像的操作系统发布信息。相反,它打印第一个的信息并返回提示。如果我运行
fg
命令,将执行下一个图像中的命令,依此类推。对于n image,我必须运行
fg
命令n-1次


有趣的是,如果我用
timeout 10 singularity exec$I cat/etc/os release
替换该命令,它将继续运行,但不会在容器中运行该命令。

它只按照我的预期工作(CentOS-7上的singularity 3.2.0),您能用干净的~/.bashrc文件重试吗?还是一个空的绑定$HOME?或者没有国旗

H=`mktemp -d`
for i in *.sif; do
echo "$i"
singularity exec -H "$H" "$i" cat /etc/os-release
done

如果使用这3个选项,exec工作正常,则需要修复.bashrc文件。

ls
在那里做什么?对于*.sif中的i,它应该是
。请参见脚本开头的Put
set-x
,以查看正在执行的命令。@Ruturaj这是
bash
exec
命令,这是
singularity
命令的
exec
选项。@Ruturaj请参见