计算机linux语言学习,2.7.1. Linux Shell学习心得

不过,另外提及一下,目前遇到一个问题,就是上述的代码:ls | tr " " "\?"

放到shell中执行:local sub_folders=`ls $input_folder | tr "\32" "\?"`;

echo '444 sub_folders='$sub_folders;

当时结果是tr无效,输出的效果中文件名中的空格没有被替换为问号。

其中当前环境是用的Cygwin,tr版本为:CLi@PC-CLI-1 ~/develop/docbook/books/arm_vs_mips/src

$ tr --version

tr (GNU coreutils) 8.15

Packaged by Cygwin (8.15-1)

Copyright (C) 2012 Free Software Foundation, Inc.

License GPLv3+: GNU GPL version 3 or later .

This is free software: you are free to change and redistribute it.

There is NO WARRANTY, to the extent permitted by law.

Written by Jim Meyering.

后来终于经过一番折腾,而搞清楚了:

把问号换成其他的,比如等:local sub_folders=`ls $input_folder | tr "\32" "\

local sub_folders=`ls $input_folder | tr "\32" "\>"`;

也都是可以看到替换的结果的。

并且也可以用:each_item=`echo $each_item | tr "\

each_item=`echo $each_item | tr "\>" " "`;

再替换回来的。

而对于上述的问号替换空格,虽然没有显示出来,但是如果没有此操作的话,后面for each_item in $sub_folders; do

所得到的每个item中,arm_vs_mips.xml - Copy_bak

就会变成三个字符串:arm_vs_mips.xml

-

Copy_bak

而有此操作,后面得到的就是一个独立的字符串:arm_vs_mips.xml - Copy_bak

所以明白了根本原因是,Cygwin中,没有正确的显示出来,实际上,是已经替换成功的了。

不过很悲催的是,单独echo问号字符,却又是可以正常显示的。。。

说实话,这样的bug,真的很让人崩溃。。。太浪费时间了。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值