कैसे बैश में एक चर में उपयोगकर्ता इनपुट पढ़ने के लिए?


89

मैं एक स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो एक iOS डिवाइस पर एक नया उपयोगकर्ता बनाने की प्रक्रिया को सरल करता है। यहाँ कदम टूट रहे हैं।

fullname="USER INPUT"
user="USER INPUT"
group=$user
uid=1000
gid=1000
home=/var/$user
echo "$group:*:$gid:$user" >> /private/etc/group
echo "$user::$uid:$gid::0:0:$fullname:$home:/bin/sh" >> /private/etc/master.passwd
passwd $user
mkdir $home
chown $user:$group $home

जैसा कि आप देख सकते हैं कुछ क्षेत्रों में इनपुट की आवश्यकता होती है। मैं स्क्रिप्ट में एक चर के लिए इनपुट का अनुरोध कैसे कर सकता हूं?

जवाबों:


180

उपयोग करें read -p:

# fullname="USER INPUT"
read -p "Enter fullname: " fullname
# user="USER INPUT"
read -p "Enter user: " user

यदि आप पुष्टि करना चाहते हैं:

read -p "Continue? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1

पथ नाम विस्तार और रिक्त स्थान के साथ विभाजन को रोकने के लिए आपको अपने चर को भी उद्धृत करना चाहिए:

# passwd "$user"
# mkdir "$home"
# chown "$user:$group" "$home"

7
आप उपयोग कर सकते हैं ${confirm^^} == 'YES'
एलेक्स-डैनियल जकिमेंको-ए।

1
@ अलेक्सा-डैनियलजैकिमेंको एक सामान्य तरीका है जो अन्य लोग उपयोग करते हैं लेकिन यह केवल 4.0+ के साथ संगत है।
konsolebox

6

हां, आप ऐसा कुछ करना चाहेंगे:

echo -n "Enter Fullname: " 
read fullname

एक अन्य विकल्प यह होगा कि वे कमांड लाइन पर इस जानकारी की आपूर्ति करें। गेटअप आपका सबसे अच्छा दांव है।

लंबे और छोटे कमांड लाइन विकल्प प्राप्त करने के लिए बैश शेल स्क्रिप्ट में गेटटॉप का उपयोग करना



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.