从bash脚本以编程方式运行“exec”
我想在各种图像中执行一个命令。我对bash循环使用一个简单的从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
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,它应该是。请参见脚本开头的Putset-x
,以查看正在执行的命令。@Ruturaj这是bash
exec
命令,这是singularity
命令的exec
选项。@Ruturaj请参见