- 论坛徽章:
- 1
|
请教echo方面的问题?
指教不敢當... ^_^
我剛才 try 了一下, 似乎不好設, 不過我也說不出個所以然...
看下面我用 A 來代替 IFS 設定:
- [netman@www tmp]$ echo -n "$IFS" | od -a
- 0000000 sp ht nl
- 0000003
- [netman@www tmp]$ A=$(echo -en " \t\n")
- [netman@www tmp]$ echo -n "$A" | od -a
- 0000000 sp ht
- 0000002
复制代码
你會發現 echo -e 那行若用 \n 結尾時, 結果會少掉了 <nl> ....
但, 若在 \n 後再加一個 <sp> 的話, 就沒問題:
- [netman@www tmp]$ A=$(echo -en " \t\n ")
- [netman@www tmp]$ echo -n "$A" | od -a
- 0000000 sp ht nl sp
- 0000004
复制代码
因此, 我只能如此設定一個與 IFS 一模一樣的 A :
- [netman@www tmp]$ A=$(echo -en " \t\n ")
- [netman@www tmp]$ A="${A% }"
- [netman@www tmp]$ echo -n "$A" | od -a
- 0000000 sp ht nl
- 0000003
- [netman@www tmp]$ echo -n "$IFS" | od -a
- 0000000 sp ht nl
- 0000003
复制代码
其實, 要還原 IFS 最好的方法是在修改 IFS 之前, 先存為一個別的變量中:
- old_IFS="$IFS"
- IFS=
- ...... # do what ever
- IFS="$old_IFS"
复制代码 |
|