echo "TestScript1 Arguments:" echo "$1" echo "$2" echo "$#" ./testscript2 $1 $2
TestScript2 looks like: echo "TestScript2 Arguments received from TestScript1:" echo "$1" echo "$2" echo "$#"
When i execute testscript1 in the following way: ./testscript1 "Firstname Lastname" [email protected]
The desired Output should be: TestScript1 Arguments: Firstname Lastname [email protected] 2 TestScript2 Arguments received from TestScript1: Firstname Lastname [email protected] 2
But the actual output is: TestScript1 Arguments: Firstname Lastname [email protected] 2 TestScript2 Arguments received from TestScript1: Firstname Lastname 3
How do i solve this problem? I want to get the desired output instead of the actual output.
You need to use : "$@" (WITH the quotes) or "${@}" (same, but also telling the shell where the variable name starts and ends). (and do NOT use : $@ , or "$*" , or $* ). in the above post you mentino you want to invoke: salt '*mysql' cmd.
When you want to pass all the arguments to another script, or function, use "$@" (without escaping your quotes). See this answer: Difference between single and double quotes in Bash.
Quote your args in Testscript 1:
echo "TestScript1 Arguments:" echo "$1" echo "$2" echo "$#" ./testscript2 "$1" "$2"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With