我的脚本中有这些行:
ipserver=1.1.1.1
fullpathfile="/var/www/html/mysite"
ssh "root@${ipserver}" "[[ -d ${fullpathfile}/node_modules ]] echo "Directory exist" || cd ${fullpathfile} && npm install "
但我收到这个错误:
Unexpected remote arg: [email protected]:/var/www/html/mysite/\#012ssh [email protected] [[
我需要通过 ssh 连接,然后检查文件夹是否存在(node_module),如果不存在,则执行:cd folder
和npm install
。
我究竟做错了什么 ?
答案1
请注意,[[
(and[
和test
) 与其他命令一样。所以你只需要在成功时&&
执行。echo
[[
ssh "root@${ipserver}" "[[ -d ${fullpathfile}/node_modules ]] && echo "Directory exist" || cd ${fullpathfile} && npm install "
但是,将一系列命令括在双引号中可能很快就会变得很麻烦,特别是如果您的目录名包含空格,或者您的命令需要自己的带引号的参数。
为了避免头痛,最好在服务器上安装一个小脚本(例如,“$HOME/bin/do_npm_install.sh”)来执行您需要的操作,然后使用 ssh 调用它,例如
ssh "root@${ipserver}" "bash ~/bin/do_npm_install.sh"