- 论坛徽章:
- 0
|
关于IFS的疑问
原帖由 "lightspeed" 发表:
1. IFS 空白在输入的开始和结束处忽略。
2. 输入中每个非 IFS 空白的 IFS 字符,以及任何相邻的 IFS 空白,定界一个字段。
3. 非零长度 IFS 空格对字段进行定界。
原帖由 "lightspeed" 发表:
1. IFS 只对参数扩展有作用, $* 是 $1 - $n, 不包括 $0
2. IFS 对参数位置无作用. 参数位置由空白字符及有无" " 决定
所以不可能出现你想象的情况.
不好意思,lightspeed兄,是否能再將上述的二段內容再做解釋,在下實在很想了解其中的義意.
另外bash在解析shell prompt與<CR>字符之間的內容時,是不是不參考IFS變量?但若其中有做變量替換時則會?因為在下的測試結果如下:
- $ IFS=I
- $ cdI/etc
- -bash: cdI/etc: No such file or directory
复制代码
I仍然不是IFS所以不能區分出command name(cd)及argument(/etc)
- $ IFS=i
- $ var="one tw three four five six seven"
- $ for n in $var eight nine;do echo \["$n"\];done
- [one tw three four f]
- [ve s]
- [x seven]
- [eight]
- [nine]
复制代码
該例在做$var變量替換時,參考了IFS變量,以i區分出[one tw three four f]、[ve s]及[x seven]三個位置參數,但eight及nine仍不為所動.
說不定我若參透上面那二段話的意思,答案就出來了! f^^ |
|