100分请教高手如何把shell的命令输出保存为一个数组

karlzheng 2011-06-21 07:08:52
如题,我用如下命令:

declare -a cmd_result
cmd_result="$(history 10 |sort -r)";
echo ${cmd_result[@]}

想把shell的命令输出保存为一个数组;但结果只是一个字符串
请教高手,如何把shell命令的输出直接保存为一个数组? 谢谢!
...全文
928 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
karlzheng 2011-06-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yanguoliang 的回复:]

其实你说的数组,在某种意义上不就变成了字符串的形式输出了,你想要个什么结果,举个列子说明下
[/Quote]
想要把执行的
history 10
输出,每条命令历史作为数组中的一个元素
mich_mia 2011-06-22
  • 打赏
  • 举报
回复
其实你说的数组,在某种意义上不就变成了字符串的形式输出了,你想要个什么结果,举个列子说明下
louyong0571 2011-06-22
  • 打赏
  • 举报
回复
echo ${cmd_result[@]}
这样输出就是字符串啊,实际上不就已经保存长数组了吗
wsfcsk 2011-06-22
  • 打赏
  • 举报
回复
楼上这样做cmd_result=($(history 10 |sort -r));
只是把全部的字符串化为一个a[0],也是a[@],但是无法饮用a1 a2 , 每条命令把\n 转化就行了,shell的数组比较麻烦, 如果写个函数来调用数组就更麻烦,但是还是可以实现的。
wsfcsk 2011-06-22
  • 打赏
  • 举报
回复
其实就是竖着变横着就可以了,我平常就是这样用的
wsfcsk 2011-06-22
  • 打赏
  • 举报
回复
[root@dylan ~]# a=($(history 10|awk '{print $2}'|tr '\n' " "))
[root@dylan ~]# echo ${a[2]}


试试这个
freetstar 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 justkk 的回复:]

linux shell数组赋值方法
[/Quote]
+1

其实shell的强项不在这里,可以考虑perl,python的列表实现
karlzheng 2011-06-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 steptodream 的回复:]

cmd_result=($(history 10 |sort -r));
[/Quote]
也是一样不行...

BTW:()只是new一个shell来执行吧?
justkk 2011-06-21
  • 打赏
  • 举报
回复
steptodream 2011-06-21
  • 打赏
  • 举报
回复
cmd_result=($(history 10 |sort -r));

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧