![프로그램 설치 확인 및 스크립트 계속 진행](https://linux55.com/image/122944/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%20%EC%84%A4%EC%B9%98%20%ED%99%95%EC%9D%B8%20%EB%B0%8F%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%20%EA%B3%84%EC%86%8D%20%EC%A7%84%ED%96%89.png)
나는 (내 생각에) 특정 프로그램과 npm 패키지의 존재를 확인한 다음 이를 수행하는 다음 스크립트를 가지고 있습니다.
#!/bin/bash
# Functions ==============================================
function programa_instalado {
# set to 1 initially
local return_=1
# set to 0 if not found
type $1 >/dev/null 2>&1 || { local return_=0; }
# return value
echo "$return_"
}
function paquete_npm_instalado {
# set to 1 initially
local return_=1
# set to 0 if not found
ls node_modules | grep $1 >/dev/null 2>&1 || { local return_=0; }
# return value
echo "$return_"
}
function pregunta_node {
if [ $1 == 1 ]; then
$(echo "Node ya instalado")
else
$(curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -)
$(sudo apt-get install -y nodejs)
$(sudo apt-get install -y build-essential)
fi
}
function pregunta_pyinstaller {
if [ $1 == 1 ]; then
$(echo "Pyinstaller ya instalado")
else
$(pip install pyinstaller)
fi
}
function pregunta_zerorpc {
if [ $1 == 1 ]; then
$(echo "Zerorpc ya instalado")
else
$(pip install zerorpc)
fi
}
# ============================================== Functions
# command line programs
$(pregunta_node $(programa_instalado node))
$(pregunta_zerorpc $(paquete_npm_instalado zerorpc))
$(pregunta_pyinstaler $(paquete_npm_instalado pyinstaller))
$(git clone some_url)
$(cd folder)
$(npm install --runtime=electron --target=1.7.9)
$(pyinstaller server.py --distpath dist ; rm -rf build/ ; rm -rf server.spec)
$(./node_modules/.bin/electron-packager . --overwrite)
문제는 실행이 영원히 중단된다는 것입니다. 무엇이 잘못되었을지 모르겠어요
답변1
명령 대체는 $(...)
괄호 안에 주어진 명령을 실행하며,출력을 다시 명령줄에 넣습니다.(글쎄, 특히 보면여기정말로 필요한 경우. )
이들은 동일한 작업을 수행합니다.
ls $(echo /bin)
ls /bin
대부분의 경우 명령줄에서 별도로 명령 대체를 실행하지 않고 명령줄에서 했던 것처럼 정상적으로 명령을 실행합니다 ls node_modules | grep ...
. 이전과 동일하지만 이상합니다.
$(echo ls /bin)
특히 $(cd somedir)
명령 대체가 서브쉘에서 실행되기 때문에 유용한 작업을 수행하지 않으므로 디렉토리를 변경해도 메인 쉘에 영향을 미치지 않습니다.
이것:
$(pregunta $(programa_instalado node))
먼저 출력하는 함수가 programa_instalado
호출됩니다 1
. 그런 다음 쉘은 명령을 실행하려고 시도 pregunta 1
하지만 오류로 판단하면 해당 이름의 명령이 없습니다. 그렇다면,출력은 명령으로도 실행됩니다..
git
마찬가지 이므로 npm
실제로 이러한 장치가 설치되어 있지 않거나 장치가 PATH
괜찮은지 확인해야 합니다.