免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4635 | 回复: 3
打印 上一主题 下一主题

[Linux] while test $# -gt 0报错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-26 15:19 |只看该作者 |倒序浏览
myfind用来查找路径下的文件是否存在并打印,“while test $# -gt 0"这里报错:/home/zack/bin/myfind: line 45: test: : integer expression expected,请问原因出在哪里

我把代码贴下来(跟其他行代码也没什么关系):

#! /bin/bash -


IFS="\040\t\n"

OLDPATH="$PATH"
PATH=/bin:/usr/bin

export PATH

error()
{
        echo "$@" 1>&2
        usage_and_exit 1
}

usage()
{
        echo "Usage: $PROGRAM [--all] [--?] [--help] [--version] envvar patten(s)"
}

usage_and_exit()
{
        usage
        exit $1
}

version()
{
        echo "$PROGRAM version $VERSION"
}

worning()
{
        echo "$@" 1>&2
        EXITCODE='expr $EXITCODE + 1'
}

all=no
envvar=
EXITCODE=0
PROGRAM="myfind"
VERSION=1.0

while test $# -gt 0
do
        case $1 in
        -all)
                all=yes
                ;;
        -help)
                ;;
        -*)
                echo "wrong parameter"
                ;;
        *)
                break
                ;;
        esac
        shift
done

envvar="$1"
test "x$envvar" = "xPAHT" && envvar=OLDPATH

dirpath=`eval echo '${'"$envvar"'}' 2>/dev/null | tr : ' '`

if test -z "$envvar"
then
        error Enviroment variable missing or empty
elif test "x$dirpath" = "x$envvar"
then
        error "Broken sh on this platform: cannot expand $envvar"
elif test -z "$dirpath"
then
        error Empty directory search path
elif test $# -eq 0
then
        exit 0
fi

for patten in "$@"
do
        result=
        for dir in $dirpath
        do
                for file in $dir/$patten
                do
                        if test -f "$file"
                        then
                                result="$file"
                                echo $result
                                test "$all" = "no" && break 2
                        fi
                done
        done
        test -z "$result" && warning "$patten: not found"
done

test $EXITCODE -gt 125 && EXITCODE 125
exit $EXITCODE

论坛徽章:
0
2 [报告]
发表于 2014-07-26 18:44 |只看该作者
请各位在自己的linux环境跑一下,也是相同情况的报错信息吗?
我的环境是:Red Hat Enterprise Linux 5 64bit
谢谢!

论坛徽章:
0
3 [报告]
发表于 2016-08-09 15:05 |只看该作者
是这行导致的 IFS="\040\t\n"
具体原因我也不清楚

论坛徽章:
13
程序设计版块每日发帖之星
日期:2016-06-29 06:20:00每日论坛发贴之星
日期:2016-08-14 06:20:00操作系统版块每日发帖之星
日期:2016-08-14 06:20:00每日论坛发贴之星
日期:2016-08-13 06:20:00数据库技术版块每日发帖之星
日期:2016-08-13 06:20:00程序设计版块每日发帖之星
日期:2016-08-13 06:20:00IT运维版块每日发帖之星
日期:2016-08-13 06:20:00每日论坛发贴之星
日期:2016-08-12 06:20:00数据库技术版块每日发帖之星
日期:2016-08-12 06:20:00程序设计版块每日发帖之星
日期:2016-08-12 06:20:00操作系统版块每日发帖之星
日期:2016-08-12 06:20:00综合交流区版块每日发帖之星
日期:2016-08-09 06:20:00
4 [报告]
发表于 2016-08-09 19:46 |只看该作者
路过帮顶~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP