免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 11287 | 回复: 10
打印 上一主题 下一主题

[文本处理] 获取shell命令返回值时,如何保持有换行符 [复制链接]

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-29 16:55 |只看该作者 |倒序浏览
本帖最后由 weichanghe2000 于 2012-12-29 16:56 编辑

大家好,linux 下面:
du -sh /tmp/* 将会列出tmp下面各个文件夹和文件大小。每行输出一个。
12M   /tmp/a
13G   /tmp/b
1.3M  /tmp/c


用 set a = `du -sh  /tmp/*` 将会获取 命令的返回值。
但是当我用 echo $a 打印时,结果将只在1行上输出,不方便查看各个文件夹大小,如下:
12M   /tmp/a 13G   /tmp/b 1.3M  /tmp/c   

如何 echo $a 打印为如下格式(即带有换行符)??
12M   /tmp/a
13G   /tmp/b
1.3M  /tmp/c


论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2012-12-29 16:58 |只看该作者
  1. a=`du -sh /tmp/*` ; echo "$a"
复制代码

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
3 [报告]
发表于 2012-12-29 17:00 |只看该作者
回复 1# weichanghe2000

http://bbs.chinaunix.net/forum.p ... p;page=4#pid1511745

仔细看看这个就明白啦

   

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
4 [报告]
发表于 2012-12-29 17:19 |只看该作者
本帖最后由 weichanghe2000 于 2012-12-29 18:23 编辑

回复 2# reyleon


不行哦。我在 cshell 上 试过了很久,还是在1行上面输出。
我用的是 redhat 5.5的版本 cshell 。
麻烦大侠继续帮忙。

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
5 [报告]
发表于 2012-12-29 17:36 |只看该作者
回复 4# weichanghe2000


    不懂csh,只知道bash

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
6 [报告]
发表于 2012-12-29 17:41 |只看该作者
本帖最后由 weichanghe2000 于 2012-12-29 18:25 编辑

回复 5# reyleon

呵呵,好吧。
在 bash 和 标准的 sh 上面 执行 都可以 换行输出。
大神,帮忙截个图,看下你的测试过程。
多谢。
   

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
7 [报告]
发表于 2012-12-29 17:44 |只看该作者
回复 6# weichanghe2000


   

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
8 [报告]
发表于 2012-12-29 17:49 |只看该作者
本帖最后由 weichanghe2000 于 2012-12-29 18:22 编辑

回复 7# reyleon


呜呜,看起来真的是 shell 版本的问题。

cshell 不能换行。 bash 和  sh 输出都 可以。

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-10-28 06:20:00数据库技术版块每日发帖之星
日期:2015-10-29 06:20:00
9 [报告]
发表于 2012-12-30 16:52 |只看该作者
回复 2# reyleon

因为之前一直用的是 cshell,标准的 sh不熟。
在标准的sh中,用   a=`du -sh /tmp/*` ;

假如返回值为
12M   /tmp/a
13G   /tmp/b
1.3M  /tmp/c

我现在 怎样 取出 上面的 每一个元素,如
12M          怎么取出来?
/tmp/a     怎么取出来?
13G          怎么取出来?
/tmp/b      怎么取出来?
1.3M        怎么取出来?
/tmp/c      怎么取出来?



论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
10 [报告]
发表于 2012-12-30 19:32 |只看该作者
回复 9# weichanghe2000


    [root@centos test]# du -sh *
20K     1
0       1.1
4.0K    a.bak.bak.test
4.0K    b.bak.bak.test
218M    Bin.bak.test
0       CrossApp_test_S1.bak.bak.test
4.0K    ip.sh.bak.bak.test
4.0K    test
4.0K    test1.sh
4.0K    test.sh
4.0K    test.sh.bak.bak.test
4.0K    urfile.bak.bak.test
2.4M    zhuang.bak.test
0       数学_7上
0       正数与负数的概念--T1.flv
[root@centos test]# a=(`du -sh *`)
[root@centos test]# for i in ${a[@]};do echo $i ;done
20K
1
0
1.1
4.0K
a.bak.bak.test
4.0K
b.bak.bak.test
218M
Bin.bak.test
0
CrossApp_test_S1.bak.bak.test
4.0K
ip.sh.bak.bak.test
4.0K
test
4.0K
test1.sh
4.0K
test.sh
4.0K
test.sh.bak.bak.test
4.0K
urfile.bak.bak.test
2.4M
zhuang.bak.test
0
数学_7上
0
正数与负数的概念--T1.flv
[root@centos test]#
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP