mirror of https://github.com/tLDP/LDP
138 lines
2.1 KiB
Bash
138 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Erratic behavior of the "$*" and "$@" internal Bash variables,
|
|
#+ depending on whether or not they are quoted.
|
|
# Demonstrates inconsistent handling of word splitting and linefeeds.
|
|
|
|
|
|
set -- "First one" "second" "third:one" "" "Fifth: :one"
|
|
# Setting the script arguments, $1, $2, $3, etc.
|
|
|
|
echo
|
|
|
|
echo 'IFS unchanged, using "$*"'
|
|
c=0
|
|
for i in "$*" # quoted
|
|
do echo "$((c+=1)): [$i]" # This line remains the same in every instance.
|
|
# Echo args.
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS unchanged, using $*'
|
|
c=0
|
|
for i in $* # unquoted
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS unchanged, using "$@"'
|
|
c=0
|
|
for i in "$@"
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS unchanged, using $@'
|
|
c=0
|
|
for i in $@
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
IFS=:
|
|
echo 'IFS=":", using "$*"'
|
|
c=0
|
|
for i in "$*"
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS=":", using $*'
|
|
c=0
|
|
for i in $*
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
var=$*
|
|
echo 'IFS=":", using "$var" (var=$*)'
|
|
c=0
|
|
for i in "$var"
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS=":", using $var (var=$*)'
|
|
c=0
|
|
for i in $var
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
var="$*"
|
|
echo 'IFS=":", using $var (var="$*")'
|
|
c=0
|
|
for i in $var
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS=":", using "$var" (var="$*")'
|
|
c=0
|
|
for i in "$var"
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS=":", using "$@"'
|
|
c=0
|
|
for i in "$@"
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS=":", using $@'
|
|
c=0
|
|
for i in $@
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
var=$@
|
|
echo 'IFS=":", using $var (var=$@)'
|
|
c=0
|
|
for i in $var
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS=":", using "$var" (var=$@)'
|
|
c=0
|
|
for i in "$var"
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
var="$@"
|
|
echo 'IFS=":", using "$var" (var="$@")'
|
|
c=0
|
|
for i in "$var"
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
echo ---
|
|
|
|
echo 'IFS=":", using $var (var="$@")'
|
|
c=0
|
|
for i in $var
|
|
do echo "$((c+=1)): [$i]"
|
|
done
|
|
|
|
echo
|
|
|
|
# Try this script with ksh or zsh -y.
|
|
|
|
exit 0
|
|
|
|
# This example script written by Stephane Chazelas,
|
|
#+ and slightly modified by the document author.
|