我明白这已经被问过,但答案并不能给我所需要的东西。 我为一个给定的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
分别获得。