ssh와 cd 명령을 함께 사용하는 방법은 무엇입니까?

ssh와 cd 명령을 함께 사용하는 방법은 무엇입니까?

원격 Git 저장소를 업데이트하기 위해 bash 스크립트를 작성하려고 합니다. 스크립트는 다음과 같습니다:

#!/bin/bash
ssh [email protected] 'cd /home/h/usr/praktikum  | git pull | sbatch run.sh'

그러나 이 cd명령은 효과가 없습니다!

치명적: git 저장소(또는 마운트 지점/home 이전의 상위 저장소)가 아닙니다.

git 폴더에 어떻게 들어가나요: /home/h/usr/praktikumgit 명령을 실행하나요?

답변1

Pipe( |)는 파이프라인에서 여러 명령의 입력과 출력을 함께 결합하는 데 사용됩니다. 이러한 명령은 입력이 나타나기를 기다리거나 출력을 읽는 경우를 제외하고 서로 독립적이며 동시에 실행됩니다. 이것이 및 명령이 cd현재 디렉토리에 영향을 미치지 않는 이유입니다. 여기서는 파이프를 사용하고 싶지 않습니다.gitsbatch

당신이 하고 싶은 일은

ssh [email protected] 'cd /home/h/usr/praktikum && { git pull; sbatch run.sh; }'

이것이 수행하는 작업은 cd지정된 디렉토리에 액세스하고 모든 것이 제대로 진행되면(디렉토리가 존재하고 해당 디렉토리에 액세스할 수 있는 경우) git및 명령을 실행하는 것입니다.sbatch

위 명령에서는 sbatch종료 상태에 관계없이 실행됩니다 git pull. 어떤 이유로든 실패할 경우 실행을 sbatch피하려면 다음을 사용하세요.git

ssh [email protected] 'cd /home/h/usr/praktikum && git pull && sbatch run.sh'

답변2

이것은 나에게 효과적입니다.

ssh [email protected] -t "cd /home/h/usr/praktikum && git pull && sbatch run.sh; bash --login"

원격 쉘에 들어가지 않기 때문입니다.

ssh [email protected] -t "cd /home/h/usr/praktikum && git pull && sbatch run.sh"

관련 정보