मेरे पास निम्नलिखित बैश है:
#!/bin/bash
if ["$#" -ne "1"]; then
echo "Usage: `basename $0` <HOSTNAME>"
exit 1
fi
IPADDR=`ifconfig | head -2 | tail -1 | cut -d: -f2 | rev | cut -c8-23 | rev`
sed -i -e "1i$IPADDR $1" /etc/hosts
लेकिन जब मैं cat /etc/hosts
:
$IPADDR
मैं ऐसे मुद्दों से कैसे निपट सकता हूं?
उत्तर:
जवाब के लिए 3 № 1आपकी समस्या यह है कि एकल उद्धरणों के अंदर चर "
शेल द्वारा "टी का विस्तार नहीं किया गया है, लेकिन अपरिवर्तित छोड़ दिया गया है। चर का उपयोग करने के लिए आप डबल उद्धरण का उपयोग करना चाहते हैं "
या बस उद्धरण छोड़ दें यदि वे यहां की तरह अनावश्यक हैं, उदा।
sed -i -e "1i"$IPADDR" "$1"" /etc/hosts
ऊपर की लाइन में $IPADDR
तथा $1
उद्धरणों के बाहर हैं और शेल द्वारा विस्तारित किया जाएगा इससे पहले कि तर्क फीड किए जा रहे हैं sed
.
जवाब के लिए 3 № 2
एकल उद्धरण का मतलब है कि स्ट्रिंग isn "t को एक चर के रूप में प्रक्षेपित किया गया है।
#!/bin/bash
IPADDR=$(/sbin/ifconfig | head -2 | tail -1 | cut -d: -f2 | rev | cut -c8-23 | rev)
sed -i -e "1i${IPADDR} ${1}" /etc/hosts
मैंने कमांड भी किया $(...)
आदत से मजबूर!