-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC2120
Vidar Holen edited this page Apr 27, 2019
·
4 revisions
sayhello() {
echo "Hello $1"
}
sayhello
./myscript World
just prints "Hello " instead of "Hello World".
sayhello() {
echo "Hello $1"
}
sayhello "$@"
./myscript World
now prints "Hello World".
In a function, $1
and up refers to the function's parameters, not the script's parameters.
If you want to process your script's parameters in a function, you have to explicitly pass them. You can do this with myfunction "$@"
.
Note that "$@"
refers to the current context's positional parameters, so if you call a function from a function, you have to pass in "$@"
to both of them:
first() { second "$@"; }
second() { echo "The first script parameter is: $1"; }
first "$@"
If the parameters are optional and you currently just don't want to use them, you can ignore this message. In versions strictly greater than v0.6.0, ignoring SC2120 on a function will also disable SC2119 on each of the call sites.