Can't store multiple arguments with read -p in macOS terminal using bash
-
30-04-2021 - |
题
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?
解决方案
The variable 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>''.
不隶属于 apple.stackexchange