将variables拆分成多个variables

我明白这已经被问过,但答案并不能给我所需要的东西。 我为一个给定的stringpgrep返回一个variables(在这种情况下,$ testpid)包含该string的PID列表。 然后我试着把每一个PID分开,他们分开了一个空间,如下所示:

PIDS:

17717 172132 2138213 

码:

 IFS=" " read -a pidarray <<< "$testpid" echo pidarray[0] 

*而不是上面的回声,我将分配数组中的每个项目自己的variables

但是我得到以下错误:

 syntax error: redirection unexpected 

你的语法几乎是正确的:

 IFS=' ' read -r -a pidarray <<< "$testpid" echo "${pidarray[0]}" 

请注意数组解引用所需的大括号。

更重要的是,检查你的shebang是#!/bin/bash ,还是你用bash yourscript执行你的脚本,而不是你的脚本。 给出的错误与无法识别<<<为有效语法的shell一致 – 当调用bash时 ,任何远程现代bash总是会这样; 即使/bin/sh指向同一个可执行文件,它也会告诉bash禁用POSIX规范中的许多扩展。


现在,这就是说 – 如果你的目标是把每个条目分配给它自己的变量,你不需要(也不应该使用) read -a

代替:

 IFS=' ' read -r first second third rest <<<"$testpid" printf '%s\n' "First PID is $first" "Second PID is $second" 

你可以试试这个。

 testpid="17717 172132 2138213" set -- $testpid echo -e $1 $2 

之后,使用$1,$2,$3分别获得。