मुझे एक साधारण आवश्यकता है। मैं कई चर को परिभाषित करना चाहता हूं जो किसी भी पैकेज के किसी भी संख्या के अनुरूप होंगे जिन्हें मैं एक शेल स्क्रिप्ट के माध्यम से स्थापित करना चाहता हूं।
नीचे नमूना कोड:
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
।