Bash: loop over arguments passed to script

July 6, 2022  ‐ 1 min read

To loop over the arguments that are passed to the bash script we can make use of the special parameters $@. This special parameter expands to the passed positional arguments starting from position one. Thus excluding the script name at position zero.

for argument in "$@"; do
  echo "$argument"
done

The special parameter $* could be an alternative to $@. However, $@ handles arguments containing spaces correctly.

When no arguments are passed $@ expands to nothing, leaving you with an empty string.