Linux 상에서 bash 쉘 실행하기

public static class ShellHelper
{
    public static ShellOutput Bash(this string cmd, string sWorkingDir)
    {
        var sEscapedArgs = cmd.Replace("\"", "\\\"");
        var process = new Process
        {
            StartInfo = new ProcessStartInfo
            {
                FileName = "/bin/bash",
                Arguments = $"-c \"{sEscapedArgs}\"",
                RedirectStandardOutput = true,
                RedirectStandardError = true,
                UseShellExecute = false,
                CreateNoWindow = true,
                WorkingDirectory = sWorkingDir
            }
        };

        ShellOutput rv = null;
        try
        {
            process.Start();
            process.WaitForExit();

            rv = new ShellOutput(process);
        }
        catch (Exception ex)
        {
            rv = new ShellOutput(null, ex);
            LogEx.Logger.LogError(ex, nameof(ShellHelper));
        }
        return rv;
    }
}

public class ShellOutput
{
    public ShellOutput(Process process, Exception ex = null)
    {
        this.Process = process;
        m_sStdErr = ex?.Message;
    }

    #region Fields

    string m_sStdOut;
    string m_sStdErr;

    #endregion Fields

    public Process Process { get; }

    public bool IsSuccessful => this.Process?.ExitCode == 0;

    public string StdOutText => m_sStdOut ??= this.Process?.StandardOutput.ReadToEnd();

    public string StdErrText => m_sStdErr ??= this.Process?.StandardError.ReadToEnd();
}

 

qiime 2가 설치된 Python 가상환경에서 실행시키기 위한 스크립트 작성

#!/bin/bash

_CONDA_ROOT="/home/user/miniconda3"

export PATH=$_CONDA_ROOT/bin:$_CONDA_ROOT/condabin

source $_CONDA_ROOT/etc/profile.d/conda.sh

#echo conda activate qiime2-2023.5
conda activate qiime2-2023.5

if [ $# == 0 ]
then
    qiime info
then
    qiime $*
fi

#echo conda deactivate
conda deactivate

 

 

qiime 실행하고 결과 받기

string sResult = "Running...";
var rv = ShellHelper.Bash("~/qiime2/q2run.sh info", null);
//var rv = ShellHelper.Bash("~/qiime2/q2run.sh tools list-types", null);
//var rv = ShellHelper.Bash("~/qiime2/q2run.sh tools list-formats", null);
if (rv.IsSuccessful)
{
    sResult = rv.StdOutText;
}
else
{
    sResult = rv.StdErrText;
}

 

qiime 2가 설치된 Python 가상환경에서 여러 명령을 수행하는 스크립트

q2env.sh

#!/bin/bash

_CONDA_ROOT="/home/user/miniconda3"

export PATH=$_CONDA_ROOT/bin:$_CONDA_ROOT/condabin:$PATH

source $_CONDA_ROOT/etc/profile.d/conda.sh

#echo conda activate qiime2-2023.5
conda activate qiime2-2023.5

if [ $# == 0 ]
then
    qiime info
else
    tid=1
    for i
    do
        echo "### q2-task-$tid"
        echo "$i"
        echo ">>>"
        $i
        echo "<<<"
        tid=`expr $tid + 1`
    done
fi

#echo conda deactivate
conda deactivate

Example:

$ ./q2env.sh "qiime info" "qiime tools list-types"
### q2-task-1
qiime info
>>>
System versions
:
<<<
### q2-task-2
qiime tools list-types
>>>
Bowtie2Index
        No description
:
<<<
$

'BIO' 카테고리의 다른 글

ASP.NET Core Dockerfile에 QIIME 2 환경 추가하기  (0) 2023.08.11
FASTQ format in QIIME 2  (0) 2023.08.01
Installing the QIIME 2 Core 2023.5 distribution using WSL  (0) 2023.07.31
QIIME 2 Core concepts  (0) 2023.07.31
FASTAQ  (0) 2023.07.31

+ Recent posts