쉘은 ssh를 사용하여 파일이 한 줄에 존재하는지 확인한 다음 cd 및 npm 설치

쉘은 ssh를 사용하여 파일이 한 줄에 존재하는지 확인한 다음 cd 및 npm 설치

내 스크립트에는 다음 줄이 있습니다.

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"

관련 정보