views:

46

answers:

2

Linux bash script:

#!/bin/bash

function Print()
{
    echo $1
}

var="*"
Print $var

Execution results:

alex@alex-linux:~/tmp$ ./sample-script 
sample-script

"*" is expanded to the list of files, which is actually script itself. How can I prevent this and see actual variable value? In general case, var can be more complicated than "*", for example: "home/alex/mydir/*".

+5  A: 

you need to escape your variables, too:

Print "$var"

And in your function:

echo "$1"
soulmerge
+2  A: 

set -o noglob

will stop bash from expanding * and can be removed with 'unset noglob'

Martin
No, `unset` isn't used for that. You would use `set +o noglob`
Dennis Williamson