以下是两个read
语句,一个使用空格作为分隔符,另一个使用\0
. 只有第一个作品。第二个我做错了什么?
$ IFS=' '; read first second < <(printf "%s " "x" "y" ); echo "$first+$second"
x+y
$ IFS=$'\0'; read first second < <(printf "%s\0" "x" "y" ); echo "$first+$second"
xy+
以下是两个read
语句,一个使用空格作为分隔符,另一个使用\0
. 只有第一个作品。第二个我做错了什么?
$ IFS=' '; read first second < <(printf "%s " "x" "y" ); echo "$first+$second"
x+y
$ IFS=$'\0'; read first second < <(printf "%s\0" "x" "y" ); echo "$first+$second"
xy+
尝试使用数组和内置的
mapfile
AKA 。readarray
详情请参阅help mapfile
。如果您提供一个空字符串作为mapfile
's-d
选项的参数,它将使用 NUL 作为分隔符。首先,创建一个函数,可以将一个数组连接成一个带有任意分隔符的字符串:
这使用第一个参数作为输出分隔符,然后使用 echo 将剩余的参数打印为单个字符串。这不仅限于连接数组,它适用于任何参数(数组、标量变量、固定字符串),但在与数组一起使用时特别有用。它被调用
joinarray
所以它不会与标准join
命令冲突。然后,使用一个名为“$array”的数组: