ผมพบว่าต่อไปนี้บนกึ่งที่เกี่ยวข้องกับคำถาม StackOverflow ; คำตอบที่ฉันต้องการไม่ได้ตอบคำถามที่นั่น (และไม่ได้รับเลือกให้เป็นคำตอบที่ถูกต้อง) ดังนั้นฉันจึงคิดว่าฉันโพสต์ไว้ที่นี่เพื่อให้ผู้อื่นหาง่ายขึ้น
yum list installed PACKAGE_NAME
คำสั่งนี้ส่งคืนเอาต์พุตที่มนุษย์อ่านได้บางส่วน แต่ที่สำคัญกว่าจะส่งคืนรหัสสถานะการออก 0 แสดงแพคเกจมีการติดตั้ง 1 บ่งชี้แพคเกจจะไม่ได้ติดตั้ง (ไม่ได้ตรวจสอบว่าแพคเกจที่ถูกต้องเพื่อyum list installed herpderp-beepbopboop
จะกลับมาเป็น "1" เช่นเดียวกับyum list installed traceroute
น้ำพระทัยถ้าคุณไม่ได้ติดตั้ง traceroute) คุณสามารถตรวจสอบ "$?" ในภายหลัง สำหรับรหัสออกนี้
เนื่องจากเอาต์พุตค่อนข้างตอบโต้ฉันจึงใช้ @Chris Downs '"ย่อ" รุ่นด้านล่างในฟังก์ชันตัวตัดคำเพื่อให้เอาต์พุตมีความ "ตรรกะ" มากขึ้น (เช่น 1 = ติดตั้ง 0 = ไม่ได้ติดตั้ง):
function isinstalled {
if yum list installed "$@" >/dev/null 2>&1; then
true
else
false
fi
}
การใช้งานจะเป็น
if isinstalled $package; then echo "installed"; else echo "not installed"; fi
แก้ไข:
แทนที่return
งบที่มีการโทรไปtrue
และfalse
ที่ช่วยทำให้ฟังก์ชั่นอ่านได้มากขึ้น / ใช้งานง่ายขณะกลับค่าทุบตีคาด (เช่น 0 จริง 1 สำหรับเท็จ)
หากคุณเพิ่งตรวจสอบหนึ่งแพคเกจในสคริปต์ของคุณคุณอาจจะดีกว่าการทดสอบyum list installed
โดยตรง แต่ (IMHO) ฟังก์ชั่นช่วยให้เข้าใจได้ง่ายขึ้นว่าเกิดอะไรขึ้นและไวยากรณ์ของมันจำง่ายกว่าyum
การเปลี่ยนเส้นทางทั้งหมด เพื่อลดการแสดงผล
$?
เพียงห่อคำสั่งในเงื่อนไข:if yum list installed "$package" >/dev/null 2>&1; then [...]