如何结合使用 ssh 和 cd 命令?

如何结合使用 ssh 和 cd 命令?

我正在尝试编写一个 bash 脚本来更新远程 git 存储库。该脚本看起来像:

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

然而,该cd命令没有任何效果!

致命:不是 git 存储库(或挂载点 /home 之前的任何父存储库)

如何进入 git 文件夹:/home/h/usr/praktikum运行我的 git 命令?

答案1

管道 ( |) 用于在管道中将多个命令的输入和输出连接在一起。这些命令彼此独立且同时运行,除了等待输入出现或读取输出时之外。这就是为什么和命令cd不影响当前目录的原因。您不想在这里使用管道。gitsbatch

你想做的是

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

这样做的目的是cd访问指定的目录,如果一切顺利(该目录存在并且您有权访问它),则运行git和命令。sbatch

在上面的命令中,sbatch无论 的退出状态如何,都会运行git pullsbatch如果您想避免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"

因为不会让你处于远程 shell 中:

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

相关内容