有以下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”更改目录,则可以正常工作。我该如何更改脚本?
答案 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(<<<
)。