Ray*_*oal 20
将调用放入数组括号中查找
X=( $(find /xyz/abc/music/ | grep def) )
echo ${X[1]}
echo ${X[2]}
echo ${X[3]}
echo ${X[4]}
Run Code Online (Sandbox Code Playgroud)
Mic*_*bus 10
如果你只需要第一个元素(或者更确切地说是行),你可以使用head
:
`find /xyz/abc/music/ |grep def | head -n 1`
Run Code Online (Sandbox Code Playgroud)
如果需要访问任意元素,可以先存储数组,然后检索元素:
arr=(`find /xyz/abc/music/ |grep def`)
echo ${arr[n]}
Run Code Online (Sandbox Code Playgroud)
但是这不会将每行grep输出放入一个单独的数组元素中.
如果你关心整行而不是单词,你可以使用head
和tail
执行此任务,如下所示:
`find /xyz/abc/music/ |grep def | head -n line_number | tail -n 1`
Run Code Online (Sandbox Code Playgroud)
小智 5
即使有些晚,最好的解决方案应该是Ray的答案,但是您必须将默认的字段分隔符环境变量IFS覆盖为换行符,才能将完整的行作为数组字段。填充阵列后,应将IFS切换回原始值。我将扩展Rays解决方案:
# keep original IFS Setting
IFS_BAK=${IFS}
# note the line break between the two quotes, do not add any whitespace,
# just press enter and close the quotes (escape sequence "\n" for newline won't do)
IFS="
"
X=( $(find /xyz/abc/music/ | grep def) )
echo ${X[1]}
echo ${X[2]}
echo ${X[3]}
echo ${X[4]}
# set IFS back to normal..
IFS=${IFS_BAK}
希望这可以帮助