|
蓝森林 http://www.lslnet.com 2006年6月26日 11:18
这样比较为什么报错?
NUM=10
b=1
while [ $b -le $NUM ]
do
echo "bbb"
b=`expr $b + 1`
done
这样写程序执行没问题。
可如果NUM是从文件中度出来的就报错: integer expression expected
文件init.txt如下:
NUM=10
读程序如下:
NUM=`awk '/NUM/{sub(/NUM=/,"");print}' init.txt`
b=1
while [ $b -le $NUM ]
do
echo "bbb"
b=`expr $b + 1`
done
执行的时候就会报告: integer expression expected
也就是这个while循环的比较出问题。请高手帮忙
|
-->
[ $b -le $NUM]-->[ $b -le $NUM ] |
sorry,是我笔误,源程序是有空格的 |
我在AIX下执行是没有问题的啊. |
我是bsh
linux下。
这个程序原来是可以执行的。
前面修改过确实犯了一个这个错误之后。在怎么该都报这个错。
但我在程序中把NUM变量直接赋值就没问题。如果是从文件中读就抱错 |
set -xv
看看你比较的究竟是什么 |
这个命令怎么用?麻烦说详细一点。
我现在怀疑是编码的问题。我的服务器与本地机器编码格式不一样。所以程序从服务器虽然读出来的是10,但程序里没当成数值类型,所以报错。 |
解决了,原来就是编码的问题,把服务器上的文件格式转换一下就好了。谢谢各位。
还望6楼的把set -xv这个命令给说一下。学习一下。谢谢 |
-->
sh -vx urscript
or
in urscript,add:
#!/bin/sh -vx |
-vx是shell的参数,例如
#/bin/bash -vx your_script_name |
| |