我有一个脚本,myscript.sh
其中包含多个命令
#!/bin/sh
singularity shell -B /home/user/Desktop/ /home/user/image/some_image.simg
/home/user/miniconda/activate my_env
cd /app/app_folder/scripts
ls -ash
第一个命令(第 3 行)调用 shell,我希望后续命令在调用的 shell 中运行。
我怎样才能让它正常工作。
答案1
一眼望去https://singularity.lbl.gov/archive/docs/v2-3/docs-shell看起来像你想要的(未经测试):
singularity shell -B /home/user/Desktop/ /home/user/image/some_image.simg -c '
/home/user/miniconda/activate my_env
cd /app/app_folder/scripts
ls -ash
'
您可能无法在 -c 命令中使用换行符,在这种情况下请尝试使用分号。
答案2
所以基本上我必须替换shell
并exec
保存后续命令在一个不同的可执行bash脚本中newscript.sh
,其中包含
#!/bin/sh
/home/user/miniconda/activate my_env
cd /app/app_folder/scripts
ls -ash
然后运行myscript.sh
#!/bin/sh
singularity exec -B /home/user/Desktop/ /home/user/image/some_image.simg bash newscript.sh
newscript.sh
在调用奇异性 shell 后,该方法将在奇异性 shell 中运行myscript.sh