ฉันมีข้อกำหนดที่ง่าย ฉันต้องการกำหนดตัวแปรหลายตัวที่จะสอดคล้องกับจำนวนแพ็คเกจที่ฉันต้องการติดตั้งผ่านเชลล์สคริปต์
โค้ดตัวอย่างด้านล่าง:
MISC="shutter pidgin"
WEB="apache2 mongodb"
for pkg in $MISC $WEB; do
if [ "dpkg-query -W $pkg | awk {'print $1'} = """ ]; then
echo -e "$pkg is already installed"
else
apt-get -qq install $pkg
echo "Successfully installed $pkg"
fi
done
ทุกอย่างทำงานได้ดี แต่ตรรกะดูเหมือนว่ามีข้อบกพร่องเพราะไม่ได้ติดตั้งแพ็คเกจที่ฉันต้องการอย่างน่าเชื่อถือ อาจกล่าวได้ว่าติดตั้งไว้แล้วหรือกำลังพยายามติดตั้งแพคเกจที่ติดตั้งไว้ก่อนหน้านี้แล้ว
ฉันได้ลองด้วยcommand -v
หรือต่อไปนี้:
if [ "dpkg -l | awk {'print $2'} | grep --regexp=^$pkg$ != """ ]; then
และถึงแม้จะมี-n
และ-z
ธงเพื่อตรวจสอบว่าสตริงกลับมาว่างเปล่า ค่อนข้างแน่ใจว่าฉันขาดความรู้สึกที่ดีที่นี่
คุณมีความคิดว่าฉันจะทำอย่างไรเพื่อให้แน่ใจว่ามีการติดตั้งแพ็คเกจจริงหรือไม่?
ขอบคุณ!
apt-get install
ใช้แพ็คเกจที่ติดตั้งด้วยapt-get install $MISC $WEB
คุณก็สามารถโทร