अधिकांश लिपियों कि पार्स/proc/cmdline इसे तोड़ने के शब्दों में और उसके बाद, उदाहरण के एक मामले बयान के साथ बहस को फ़िल्टर:विभाजन/proc/cmdline तर्क
CMDLINE="quiet union=aufs wlan=FOO"
for x in $CMDLINE
do
»···case $x in
»···»···wlan=*)
»···»···echo "${x//wlan=}"
»···»···;;
»···esac
done
समस्या है जब WLAN ESSID रिक्त स्थान है। उपयोगकर्ता wlan='FOO
बार '(एक शैल चर की तरह) सेट करने की उम्मीद करते हैं और फिर उपरोक्त कोड के साथ 'FOO
का अप्रत्याशित परिणाम प्राप्त करते हैं, क्योंकि लूप के लिए रिक्त स्थान पर विभाजन होता है।
क्या /proc/cmdline
को एक शेल स्क्रिप्ट से लगभग इसे कम करने से कम करने का कोई बेहतर तरीका है?
या क्या कुछ उद्धरण चाल है? मैं सोच रहा था कि मैं शायद उपयोगकर्ताओं को इकाई उद्धरण रिक्त स्थान और डीकोड करने के लिए कह सकता हूं: /bin/busybox httpd -d "FOO%20BAR"
। या यह एक बुरा समाधान है?
आपका खोल पहले ही कमांड लाइन को विभाजित कर रहा है, विभाजन को विभाजित कर रहा है। आप इसे "अयोग्य" क्यों करना चाहते हैं और न केवल यह मान लें कि उपयोगकर्ता तर्क को सही तरीके से उद्धृत करेगा - जैसे कि इसे किसी अन्य आदेश के साथ करना है? यदि आप अंतरिक्ष के साथ एक फ़ाइल को हटाना चाहते हैं, तो आप अंतरिक्ष के साथ «आरएम" फ़ाइल टाइप करें "»। क्या होगा यदि आपका ईएसएसआईडी «essid wlan = FOO» है? – liori
ठीक है, मैंने जेस्पर के रूप में भी यही गलती की है ... – liori