引号引起奇怪的变量
本帖最后由 lionfun 于 2011-06-06 13:30 编辑
复制代码
补充两个脚本如下:
复制代码
结果为:
c----cccssbddddsd(有4个空白字符)
(注 -表示為空白)
复制代码
结果为:
c
-------------------------空白列
-------------------------空白列
-------------------------空白列(共三行)
cccssbddddsd
- #!/bin/bash
- var="'(]\\{}\$\""
- echo $var # '(]\{}$"
- echo "$var" # '(]\{}$" 和上面一句没什么不同.
- echo
- IFS='\'
- echo $var # '(] {}$" \字符被空白符替换了,为什么?
- echo "$var" # '(]\{}$"
- exit 0
- #!/bin/bash
- IFS=a
- a='caaaacccssbddddsd'
- for c in "$a" ;do
- echo $c
- done
c----cccssbddddsd(有4个空白字符)
(注 -表示為空白)
- #!/bin/bash
- IFS=a
- a='caaaacccssbddddsd'
- for c in $a ;do
- echo $c
- done
c
-------------------------空白列
-------------------------空白列
-------------------------空白列(共三行)
cccssbddddsd
作者: lionfun 发布时间: 2011-06-06
作者: xiaopan3322 发布时间: 2011-06-06
本帖最后由 hackooo 于 2011-06-06 13:50 编辑
lz,我也刚学几天,刚看到IFS这东东,
看看下面这个对你有没帮助:
在shell 完成参数变换和命令置换之后,对命令行中包含在IFS变量内的字符进行词法分析,这时,除非被引号引进来,多余的空格、制表符及换行符都被消除。并且明显的(没有引号的)空自变量也被消除。
你如果把IFS改变了,那没有被引号引进来的变量,里面的字符如果在IFS里,就会被消除,我的理解,不知道有没错误,呵呵
但是关于那个for循环里的那个,我就不清楚,发了贴问了,被楼上老兄说是13问:curse:
lz,我也刚学几天,刚看到IFS这东东,
看看下面这个对你有没帮助:
在shell 完成参数变换和命令置换之后,对命令行中包含在IFS变量内的字符进行词法分析,这时,除非被引号引进来,多余的空格、制表符及换行符都被消除。并且明显的(没有引号的)空自变量也被消除。
你如果把IFS改变了,那没有被引号引进来的变量,里面的字符如果在IFS里,就会被消除,我的理解,不知道有没错误,呵呵
但是关于那个for循环里的那个,我就不清楚,发了贴问了,被楼上老兄说是13问:curse:
作者: hackooo 发布时间: 2011-06-06