Search code examples
bashshelldouble-quotessalt-project

Calling one Bash script from another Script passing it arguments with quotes and spaces


I made two test bash scripts on Linux to make the problem clear.

TestScript1 looks like:

    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" testmail@example.com

The desired output should be:

    TestScript1 Arguments:
    Firstname Lastname
    testmail@example.com
    2
    TestScript2 Arguments received from TestScript1:
    Firstname Lastname
    testmail@example.com
    2

But the actual output is:

    TestScript1 Arguments:
    Firstname Lastname
    testmail@example.com
    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.


Solution

  • Quote your args in Testscript 1:

    echo "TestScript1 Arguments:"
    echo "$1"
    echo "$2"
    echo "$#"
    ./testscript2 "$1" "$2"