shell 高手帮我看下子

shell 高手帮我看下子

部分脚本
echo  "\$$HOSTNAM"_cpuu=$(cat "$DETEC/$HOSTNAM/cpu.txt" |sed -n '1'p)%  >>$INDEXM/$HOSTNAM/$HOSTNAM.inc
echo  "\$$HOSTNAM"_cpus=$(cat "$DETEC/$HOSTNAM/cpu.txt" |sed -n '2'p)%  >>$INDEXM/$HOSTNAM/$HOSTNAM.inc
echo  "\$$HOSTNAM"_pingl=$(cat "$DETEC/$HOSTNAM/ping.txt"|sed -n '1'p)%  >>$INDEXM/$HOSTNAM/$HOSTNAM.inc
echo  "\$$HOSTNAM"_pingt=$(cat "$DETEC/$HOSTNAM/ping.txt"|sed -n '1'p)ms  >>$INDEXM/$HOSTNAM/$HOSTNAM.inc
echo  "\$$HOSTNAM"_diskf=$(cat "$DETEC/$HOSTNAM/disk.txt" |sed -n '1'p|awk '{printf "%.1f\n",$1}')%  >>$INDEXM/$HOSTNAM/$HOSTNAM.inc
echo "\$$HOSTNAM"_memu=$(cat "$DETEC/$HOSTNAM/mem.txt"|sed -n '1'p)%  >>$INDEXM/$HOSTNAM/$HOSTNAM.inc
echo "?>"           >>$INDEXM/$HOSTNAM/$HOSTNAM.inc
done
主机较多,使用循环生成hostname.inc , 然后在*.php中调用显示个各变量,
脚本生成的文件中变量只有数值,现在要加上单位(% , ms),按以上添加后出来的结果如下:
%www_cpuu=1
%www_cpus=1
%www_pingl=0
msww_pingt=0
$www_diskf=17.3% <---It's OK.
%www_memu=58.3
把上面的echo 加上 “-n” 后,分成两个(单位单独用echo输出),结果也是这样子; 有些不好理解了,大侠可否解释一下。谢谢。。。。

ps :我的shell脚本处女作。 :w      
今天用vi (之前用的是gedit)打开之后发现每个数值后有很多的“ ^M ”,在每个sed后加了 awk '{printf "%.1f\n",$1}'  问题解决了,

联想到之前也出现类似的现象: 同样的两台*nix机子,在一台机子上写的脚本 ftp 上传到 linux 后再下载来(asc 、bin 都试过) ,就不能使用了,也是 ^M 的原因,

假如是汉字,utf-8直接用gb2312识别时会有乱码;
不知这个错误是不是同样的原因引起的? 如何避免呢?      
ftp 时用 binary 模式应该就不会再有 ^M 的问题
第二个问题可能也与此有关, 试试便知