functionunixshdisambiguation

Call functions vs call external program?


Suppose I have a program named abc in the search path, and I write a script containing the following:

#!/bin/sh
abc() {
    echo Hello
}
$1

Invoking this script with a parameter abc calls the function. Is there a way to always run the external program instead?


Solution

  • OK, this seems to do the job:

    #!/bin/sh
    abc() {
        echo Hello
    }
    
    # calls whatever the argument contains in a new context
    sh -c $1
    
    # I can still call my function
    abc