cat -etv <<<"$IFS"
From the bash man page:
The shell treats each character of IFS as a delimiter, and splits the results of the other expansions into words on these characters. If IFS is unset, or its value is exactly <space><tab><newline>, the default, then sequences of <space>, <tab>, and <newline> at the beginning and end of the results of the previous expansions are ignored, and any sequence of IFS characters not at the beginning or end serves to delimit words. If IFS has a value other than the default, then sequences of the whitespace characters space and tab are ignored at the beginning and end of the word, as long as the whitespace character is in the value of IFS (an IFS whitespace character). Any character in IFS that is not IFS whitespace, along with any adjacent IFS whitespace characters, delimits a field. A sequence of IFS whitespace characters is also treated as a delimiter. If the value of IFS is null, no word splitting occurs.
Create a text file called /tmp/domains.txt as follows:
cyberciti.biz|202.54.1.1|/home/httpd|ftpcbzuser nixcraft.com|202.54.1.2|/home/httpd|ftpnixuser
Create a shell script called setupapachevhost.sh as follows:
#!/bin/bash
# setupapachevhost.sh - Apache webhosting automation demo script
file=/tmp/domains.txt
# set the Internal Field Separator to |
IFS='|'
while read -r domain ip webroot ftpusername
do
printf "*** Adding %s to httpd.conf...\n" $domain
printf "Setting virtual host using %s ip...\n" $ip
printf "DocumentRoot is set to %s\n" $webroot
printf "Adding ftp access for %s using %s ftp account...\n\n" $domain $ftpusername
done < "$file"
Save and close the file. Run it as follows:
chmod +x setupapachevhost.sh
./setupapachevhost.sh
Sample outputs:
*** Adding cyberciti.biz to httpd.conf... Setting virtual host using 202.54.1.1 ip... DocumentRoot is set to /home/httpd Adding ftp access for cyberciti.biz using ftpcbzuser ftp account... *** Adding nixcraft.com to httpd.conf... Setting virtual host using 202.54.1.2 ip... DocumentRoot is set to /home/httpd Adding ftp access for nixcraft.com using ftpnixuser ftp account...
Where,
#!/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
#!/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
https://bash.cyberciti.biz/guide/$IFS