伙计们,我该如何让这个工作?
`find /xyz/abc/music/ |grep def`
我不想将数组存储在任何临时变量中。我们如何直接操作这个数组。
所以要获取该数组的第一个元素
echo ${$(`find /xyz/abc/music/ |grep def`)[0]} 请帮助我如何实现这个。
将查找调用放在数组括号中
X=( $(find /xyz/abc/music/ | grep def) )
echo ${X[1]}
echo ${X[2]}
echo ${X[3]}
echo ${X[4]}
如果你只需要第一个元素(或者说行),你可以使用head
:
`find /xyz/abc/music/ |grep def | head -n 1`
如果你需要访问任意元素,你可以先存储数组,然后检索元素:
arr=(`find /xyz/abc/music/ |grep def`)
echo ${arr[n]}
但这不会将grep输出的每一行放入数组的单独元素中。
如果您关心整行而不是单词,您可以使用head
和tail
来完成此任务,像这样:
`find /xyz/abc/music/ |grep def | head -n line_number | tail -n 1`
# 保留原始IFS设置
IFS_BAK=${IFS}
# 注意两个引号之间的换行符,不要添加任何空格,
# 只需按Enter并关闭引号(换行符的转义序列“\n”无法使用)
IFS="
"
X=( $(find /xyz/abc/music/ | grep def) )
echo ${X[1]}
echo ${X[2]}
echo ${X[3]}
echo ${X[4]}
# 将IFS设置回正常状态..
IFS=${IFS_BAK}
希望这可以帮到你。array_name=(`find directorypath | grep "string" | awk -F "\n" '{print $1}'`)
echo $array_name
你的意思是要获取输出的第一行吗?
find /xyz/abc/music/ |grep def|head 1