내 스크립트에는 다음 줄이 있습니다.
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"