如何在调用 shell 后运行后续命令

如何在调用 shell 后运行后续命令

我有一个脚本,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

所以基本上我必须替换shellexec保存后续命令在一个不同的可执行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

相关内容