シェル呼び出し後に後続のコマンドを実行する方法

シェル呼び出し後に後続のコマンドを実行する方法

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)はシェルを呼び出し、後続のコマンドを呼び出しシェルで実行したいと思います。

どうすれば正しく動作させることができますか?

答え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

したがって、デフォルトでは、次のコマンドを含む他の実行可能なbashスクリプトで後続のコマンドを置き換えて保存する必要がshellあります。execnewscript.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特異性シェルを呼び出した後、メソッドは特異性シェルで実行されます。myscript.sh

関連情報