I am trying to store words from an input as parameters with
read -p as follows :
read -p "Enter your command: " cmd arg1 arg2 echo "$cmd" echo "$arg1" echo "$arg2"
With this, $cmd contains all 3 inputs separated by spaces, $arg1 and $arg2 are empty. Any idea why ?
IFS is used by various commands. The safest thing to do is save the value, then restore when finished. Below is an example.
declare "IFS_BACKUP=$IFS" IFS=$' \t\n' read -p "Enter your command: " cmd arg1 arg2 IFS="$IFS_BACKUP" echo "$cmd" echo "$arg1" echo "$arg2"
The documentation command
man bash defines
IFS as follows:
IFS The Internal Field Separator that is used for word splitting after expansion and to split lines into words with the read builtin command. The default value is ``<space><tab><new- line>''.