用于ssh连接和更改文件夹的bash脚本

时间:2018-03-25 10:10:02

标签: bash

有以下bash脚本:

#!/bin/bash

set -o errexit

# Общие параметры
server="some_server"
login="admin"
default_path="/home/admin/web/"
html_folder="/public_html"

# Параметры проекта
project_folder="project_name"

go_to_folder() {
  ssh "$login@$server"
  cd "/home/admin/web/"
}

go_to_folder

我收到错误“deploy.sh:第16行:cd:/ home / admin / web /:没有这样的文件或目录”,但如果我手动连接并通过“cd”更改目录,则可以正常工作。我该如何更改脚本?

1 个答案:

答案 0 :(得分:1)

是的很明显,不是吗?您正尝试在本地计算机上执行cd,在目标计算机上执行而不是。传递给ssh的命令很多都是与其参数一起提供的,在一个单独的换行符上看起来好像你在远程机器上执行no-op并在本地运行cd

go_to_folder() {
ssh "$login@$server" "cd /home/admin/web/"      
}

或者更简洁的方法是使用here-docs

go_to_folder() {
ssh "$login@$server" <<EOF
cd /home/admin/web/
EOF
}

使ssh读取运行命令的标准输入的其他方法是使用here-strings(<<<)。