खोज…


वाक्य - विन्यास

  • गेटटॉप्स नाम रखने का विकल्प [args]

पैरामीटर

पैरामीटर विस्तार
optstring मान्यता प्राप्त करने के लिए विकल्प वर्ण
नाम फिर नाम जहाँ पार्स विकल्प संग्रहीत किया जाता है

टिप्पणियों

विकल्प

optstring : मान्यता प्राप्त करने के लिए विकल्प वर्ण

यदि किसी वर्ण का बृहदान्त्र द्वारा अनुसरण किया जाता है, तो विकल्प में एक तर्क होने की अपेक्षा की जाती है, जिसे श्वेत स्थान से अलग किया जाना चाहिए। पेट ( : ) (और प्रश्न चिह्न ? ) विकल्प पात्रों के रूप में इस्तेमाल नहीं किया जा सकता है।

जब भी इसे लागू किया जाता है, getopts अगले विकल्प को शेल वैरिएबल नाम में रखता है, नाम को इनिशियलाइज़ करता है यदि यह मौजूद नहीं है, और अगले ऑप्शन के इंडेक्स को वेरिएबल OPTIND में प्रोसेस किया जाता है। OPTIND को प्रत्येक बार शेल या शेल स्क्रिप्ट के 1 बार प्रारंभ करने के लिए प्रारंभ किया जाता है।

जब किसी विकल्प के लिए तर्क की आवश्यकता होती है, getopts उस तर्क को चर OPTARG । खोल में रीसेट नहीं होता OPTIND स्वचालित रूप से; यह करने के लिए अधिक कॉल के बीच मैन्युअल रूप से रीसेट करना होगा getopts ही खोल मंगलाचरण के भीतर यदि मानकों का एक नया सेट में इस्तेमाल किया जा रहा है।

जब विकल्पों का अंत होता है, तो getopts शून्य से अधिक रिटर्न वैल्यू के साथ बाहर निकलता है।

पहला गैर-विकल्प तर्क के सूचकांक में OPTIND सेट है, और नाम ? सेट है ?getopts सामान्य रूप से स्थितीय मापदंडों को पार्स करता है, लेकिन अधिक बहस में दिया जाता है, तो args , getopts उन बजाय पार्स करता है।

getopts दो तरह से त्रुटियों की रिपोर्ट कर सकता है। का पहला वर्ण हैं optstring (एक कॉलन है : ), मूक त्रुटि रिपोर्टिंग किया जाता है। सामान्य ऑपरेशन में नैदानिक संदेश तब प्रिंट किए जाते हैं जब अमान्य विकल्प या लापता विकल्प तर्क सामने आते हैं।

यदि वेरिएबल OPTERR 0 सेट है, तो कोई त्रुटि संदेश प्रदर्शित नहीं होगा, भले ही optstring का पहला वर्ण कोई कोलन न हो।

यदि कोई अमान्य विकल्प दिखाई देता है, getopts स्थान getopts हैं ? name और, यदि चुप नहीं है, तो एक त्रुटि संदेश प्रिंट करता है और OPTARG को OPTARG । यदि getopts चुप है, तो पाया गया विकल्प वर्ण OPTARG में रखा गया है और कोई नैदानिक संदेश नहीं छपा है।

यदि एक आवश्यक तर्क नहीं मिला है, और getopts चुप नहीं है, तो एक प्रश्न चिह्न ( ? ) name रखा गया है, OPTARG है, और एक नैदानिक संदेश मुद्रित होता है। यदि getopts चुप है, तो एक कॉलन ( : ) नाम में रखा गया है और OPTARG विकल्प चरित्र को तैयार है।

pingnmap

#!/bin/bash
# Script name : pingnmap
# Scenario : The systems admin in company X is tired of the monotonous job
# of pinging and nmapping, so he decided to simplify the job using a script.
# The tasks he wish to achieve is
# 1. Ping - with a max count of 5 -the given IP address/domain. AND/OR
# 2. Check if a particular port is open with a given IP address/domain.
# And getopts is for her rescue.
# A brief overview of the options
# n : meant for nmap
# t : meant for ping
# i : The option to enter the IP address
# p : The option to enter the port
# v : The option to get the script version


while getopts ':nti:p:v' opt
#putting : in the beginnnig suppresses the errors for invalid options
do
case "$opt" in
   'i')ip="${OPTARG}"
       ;;
   'p')port="${OPTARG}"
       ;;
   'n')nmap_yes=1;
       ;; 
   't')ping_yes=1;
       ;;
   'v')echo "pingnmap version 1.0.0"
       ;;
    *) echo "Invalid option $opt"
       echo "Usage : "
       echo "pingmap -[n|t[i|p]|v]"
       ;;
esac
done
if  [ ! -z "$nmap_yes" ] && [ "$nmap_yes" -eq "1" ]
then
   if [ ! -z "$ip" ] && [ ! -z "$port" ]
   then
     nmap -p "$port" "$ip"
   fi
fi

if  [ ! -z "$ping_yes" ] && [ "$ping_yes" -eq "1" ]
then
   if [ ! -z "$ip" ]
   then
     ping -c 5 "$ip"
   fi
fi
shift $(( OPTIND - 1 )) # Processing additional arguments
if [ ! -z "$@" ]
then
  echo "Bogus arguments at the end : $@"
fi

उत्पादन

$ ./pingnmap -nt -i google.com -p 80

Starting Nmap 6.40 ( http://nmap.org ) at 2016-07-23 14:31 IST
Nmap scan report for google.com (216.58.197.78)
Host is up (0.034s latency).
rDNS record for 216.58.197.78: maa03s21-in-f14.1e100.net
PORT   STATE SERVICE
80/tcp open  http

Nmap done: 1 IP address (1 host up) scanned in 0.22 seconds
PING google.com (216.58.197.78) 56(84) bytes of data.
64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=1 ttl=57 time=29.3 ms
64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=2 ttl=57 time=30.9 ms
64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=3 ttl=57 time=34.7 ms
64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=4 ttl=57 time=39.6 ms
64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=5 ttl=57 time=32.7 ms

--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 29.342/33.481/39.631/3.576 ms
$ ./pingnmap -v
pingnmap version 1.0.0
$ ./pingnmap -h
Invalid option ?
Usage : 
pingmap -[n|t[i|p]|v]
$ ./pingnmap -v
pingnmap version 1.0.0
$ ./pingnmap -h
Invalid option ?
Usage : 
pingmap -[n|t[i|p]|v]


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow