Function के Parameters
$1, $2, और इसी तरह, बिल्कुल वैसे ही जैसे एक पूरी script command-line arguments receive करती है।In this page:
function_name() {
echo "$1" "$2" # arguments
echo "$#" # argument count
}
function_name arg1 arg2
Accessing Arguments with $1, $2...
जब एक function arguments के साथ call किया जाता है, वे values उस call की duration के लिए function के अपने $1, $2, और इसी तरह बन जाती हैं, बिल्कुल एक script के command-line arguments की तरह।
यह एक single function को अलग-अलग behave करने देता है depending on क्या दिया गया है।
उदाहरण: Accessing Arguments with $1, $2...
#!/bin/bash
greet() {
echo "Hello, $1! You are $2 years old."
}
greet "Ada" 36
Login to try C/C++/Java/PHP code in the editor
Counting Arguments with $#
एक function के अंदर $# आपको exactly बताता है कि उस particular call में कितने arguments pass किए गए, जो input को उपयोग करने से पहले validate करने के लिए उपयोगी है।
यह count function तक scoped है -- यह script के अपने top-level argument count को reflect नहीं करता।
उदाहरण: Counting Arguments with $#
#!/bin/bash
sum_two() {
if [ "$#" -ne 2 ]; then
echo "Error: expected exactly 2 arguments, got $#"
return 1
fi
echo "Sum: $(( $1 + $2 ))"
}
sum_two 3 4
sum_two 3 || echo "Handled the argument-count error gracefully"
Login to try C/C++/Java/PHP code in the editor
Forwarding All Arguments with "$@"
एक function के अंदर "$@" उस function को pass किए हर argument में expand होता है, हर एक अपना अलग word preserved, जो सभी arguments को किसी और command को forward करने का correct तरीका है।
यह functions के लिए वैसे ही काम करता है जैसे पूरी scripts के लिए।
उदाहरण: Forwarding All Arguments with "$@"
#!/bin/bash
log_message() {
echo "[LOG] $*"
}
notify_all() {
log_message "$@"
}
notify_all "System" "started successfully"
Login to try C/C++/Java/PHP code in the editor
Default Values for Missing Parameters
बिल्कुल script arguments की तरह, एक function ${1:-default} style parameter expansion उपयोग कर सकता है जब caller एक argument omit करे तो एक fallback supply करने के लिए। यह एक unset positional parameter reference करने से होने वाली errors से बचाता है।
उदाहरण: Default Values for Missing Parameters
#!/bin/bash
set_volume() {
local level="${1:-50}"
echo "Volume set to $level"
}
set_volume 80
set_volume
Login to try C/C++/Java/PHP code in the editor
- यह मान लेना कि एक function caller के local variables को नाम से automatically access कर सकता है; जब तक explicitly एक argument के रूप में pass न किया जाए (या variable global हो), एक function सिर्फ वह देखता है जो उसे
$1,$2, आदि के through दिया जाता है। - एक function के
$1को script के अपने$1के साथ confuse करना; एक function के अंदर, positional parameters temporarily function के अपने call arguments से replace हो जाते हैं, उस call की duration के लिए script-level वालों को shadow करते हुए। - एक function के arguments को किसी और command को forward करते समय
"$@"quote करना भूल जाना, जिससे spaces वाले arguments अलग split हो जाते हैं।
- एक function के अंदर,
$1,$2, ... उस function के अपने arguments को refer करते हैं, script के original command-line arguments को नहीं। - एक function के अंदर
$#उस specific function call को pass किए गए arguments की संख्या देता है। - एक function के अंदर
"$@"उस function के सभी arguments में expand होता है, हर एक quoted होने पर एक अलग word के रूप में preserved। - Functions को पहले से parameter names declare करने की ज़रूरत नहीं है -- आप बस body में जहां भी ज़रूरत हो
$1,$2, आदि reference करते हैं।
Chapter Quiz — Complete all 11 topics to unlock
0/11 topics done
Complete these topics first: