Reference : https://bash.cyberciti.biz/guide/$IFS
IFS Effect On The Values of “$@” And “$” $@ and $ are special command line arguments shell variables. The $@ holds list of all arguments passed to the script. The $* holds list of all arguments passed to the script. Create a shell script called ifsargs.sh: #!/bin/bash
ifsargs.sh - Cmd args - positional parameter demo
echo “Command-Line Arguments Demo” echo “* All args displayed using $@ positional parameter **” echo $@ echo “ All args displayed using $* positional parameter **” echo $ Save and close the file. Run it as follows:
chmod +x ifsargs.sh ./ifsargs.sh honda yamaha harley-davidson kawasaki Sample outputs:
Command-Line Arguments Demo ** All args displayed using $@ positional parameter ** honda yamaha harley-davidson kawasaki ** All args displayed using $ positional parameter ** honda yamaha harley-davidson kawasaki As you can see, the values of $@ and $ are same. However, the values of “$@” and “$*” are different (note double quotes). Edit ifsargs.sh as follows #!/bin/bash
ifsargs.sh - Cmd args - positional parameter demo
Set the IFS to |
IFS=’|’
echo “Command-Line Arguments Demo”
echo “* All args displayed using $@ positional parameter **” echo “$@” # double quote added ***#
echo “* All args displayed using $* positional parameter **” echo “$” #* double quote added ***# Save and close the file. Run it as follows:
./ifsargs.sh honda yamaha harley-davidson kawasaki Sample outputs:
Command-Line Arguments Demo ** All args displayed using $@ positional parameter ** honda yamaha harley-davidson kawasaki ** All args displayed using $ positional parameter ** honda|yamaha|harley-davidson|kawasaki $@ expanded as “$1” “$2” “$3” … “$n” $ expanded as “$1y$2y$3y…$n”, where y is the value of IFS variable i.e. “$*” is one long string and $IFS act as an separator or token delimiters.