ฉันมีปัญหาแปลก ๆ จริงๆ ฉันขยายการติดตั้งระบบปฏิบัติการสำหรับราสเบอร์รี่ Pi ฉันกำหนดค่าให้บูตอัตโนมัติหลังจากที่ตัวติดตั้งทำสิ่งต่าง ๆ และรันสคริปต์ของฉันซึ่งติดตั้งที่เหลืออยู่ แต่บางครั้งฉันต้องการติดตั้งส่วนเพิ่มเติมของฉันใหม่โดยไม่ต้องติดตั้งทั้งระบบปฏิบัติการใหม่ ดังนั้นฉันจึงมีสคริปต์ที่เรียกว่าon-first-login.shพร้อมสิ่งนี้:
if [ $(command -v git) ]; then
echo "Git already installed."
else
apt-get install git -y
fi
git clone git@github.com:me/my-repo.git ~/my-repo
ตอนนี้เป็นส่วนที่แปลกจริง ๆ ด้านบนใช้งานได้เมื่อจำเป็นต้องติดตั้ง git เท่านั้นหรือหากฉันเปลี่ยนสคริปต์เป็นสิ่งนี้:
apt-get install git -y
git clone git@github.com:me/my-repo.git ~/my-repo
มิฉะนั้นฉันจะได้รับข้อผิดพลาดนี้:
ssh: ไม่สามารถแก้ไขชื่อโฮสต์ github.com: ไม่ทราบชื่อหรือบริการ
ฉันต้องการแก้ปัญหานี้โดยหลักแล้วจะต้องหลีกเลี่ยงการโทรapt-get install git -y
เพราะใช้เวลาประมาณ 5 วินาที (หากติดตั้ง git ไปแล้ว) ซึ่งค่อนข้างเจ็บปวด
ฉันพยายามทำให้สคริปต์รอ ping ที่ประสบความสำเร็จเช่นนั้น:
if [ $(command -v git) ]; then
echo "Git already installed."
else
apt-get install git -y
fi
pingerr=1
while [ $pingerr ]; do
sleep 1
ping -c 1 github.com | grep "1 received"
pingerr=$?
if [ $pingerr ]; then
echo "Could not ping github. Retrying..."
else
echo "Successfully pinged github"
fi
done
git clone git@github.com:me/my-repo.git ~/my-repo
แต่มันลองใหม่เรื่อย ๆ
เกิดอะไรขึ้นบนโลกนี้? ดูเหมือนapt-get install
จะทำสิ่งที่พิเศษและฉันชอบที่จะรู้ว่าสิ่งที่