LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 3946|回复: 5

bourne shell如何在字符串定义“换行符”

[复制链接]
发表于 2009-11-10 15:49:11 | 显示全部楼层 |阅读模式
6楼的骂得好,呵呵。

我想问一个新问题,不知道是不是手册也有写。

我man过了,没看着的说……要看info吗?

bash我知道可以这样定义:
string=$'\n'

那bournce shell呢,有什么办法可以定义吗?

ash呢?谢谢大家。

其实我最终想做的事是设置IFS的值。要把IFS的值设为仅“制表符”和“换行符”,这个在bash里是:
IFS=$'\t\n'
不过,在bourne shell里应该怎么写呢?我搜了半天没搜到,谢谢大家:)

自己想了个办法:
IFS=`echo -e "\n\t"`

现在看来可行……不知道有更好的办法没。
发表于 2009-11-10 16:23:14 | 显示全部楼层
我的理解是:当你把单引号放在双引号之内时,就意味着把单引号当作普通字符解析。所以这里,内部的单引号无法被当作连接两个参数的用途。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-10 16:43:16 | 显示全部楼层
Post by poet;2044353
我的理解是:当你把单引号放在双引号之内时,就意味着把单引号当作普通字符解析。所以这里,内部的单引号无法被当作连接两个参数的用途。


这里的双引号只是为了把完整的命令行赋值给变量cmd而已。

事实上,使用命令:
echo $cmd
我们会到看cmd的内容是不包括双引号的。
回复 支持 反对

使用道具 举报

发表于 2009-11-10 18:23:33 | 显示全部楼层
shell 特性如此,请读下 man bash 搜 IFS,其它 shell 类似。

用 ' ' 做除分割符外的用途,本就不合习惯,自寻烦恼。

2楼说法也不全对。
echo 更不适合用来看 环境变量 真实内容。
您执行 set | grep cmd 就会知道为什么,set 也可用 declare 替换。

另,对于 shell,命令行中的 '"' 不等同于 环境变量 中的 '"'。
您不想 shell 过滤命令行带来副作用的话,可以使用 eval $cmd。

请找本版顶置 bash 资料好好读读。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-11-11 10:24:24 | 显示全部楼层
Post by 聚焦深空;2044396
shell 特性如此,请读下 man bash 搜 IFS,其它 shell 类似。

用 ' ' 做除分割符外的用途,本就不合习惯,自寻烦恼。

2楼说法也不全对。
echo 更不适合用来看 环境变量 真实内容。
您执行 set | grep cmd 就会知道为什么,set 也可用 declare 替换。

另,对于 shell,命令行中的 '"' 不等同于 环境变量 中的 '"'。
您不想 shell 过滤命令行带来副作用的话,可以使用 eval $cmd。

请找本版顶置 bash 资料好好读读。


非常感谢,bash命令行处理确实是个好贴,我看的关于 shell编程的书都没有介绍过。

请问有好的书籍推荐吗?看贴子还是觉得有点零散。
回复 支持 反对

使用道具 举报

发表于 2009-11-12 18:51:05 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表