QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 660|回复: 0

bash编程的问题,求救!

[复制链接]
发表于 2003-7-8 11:01:45 | 显示全部楼层 |阅读模式
在进行bash编程的时候遇到一个问题,请教各位高手:
[code:1]
#!/bin/bash
# getopts.sh - Using getopts
############################

while getopts ":xy:z:" opt;
do
        case $opt in
                x) xopt='-x set';;
                y) yopt="-y set and called with $OPTARG";;
                z) zopt="-z set and called with $OPTARG";;
                \?)echo 'USAGE: getopts.sh [-x] [-y arg] [-z arg] file ...'
                   exit 1
        esac
done
shift $($OPTIND - 1)

echo ${xopt:-'did not use -x'}
echo ${yopt:-'did not use -y'}
echo ${zopt:-'did not use -z'}

echo "Remaining command-line arguments are:"
for f in "$@"
do
        echo -e "\t$f"
done
[/code:1]

问题出在shift一句,$OPTIND是一个数,它等于下一个将被处理的命令行参数的位置。shift内置命令移走位置参数,就是说,shift N移走N个位置参数。因此,$OPTIND-1和位置参数里选项参数的数目相等。所有的选项参数被移走,剩下非选项参数留给普通脚本处理。

但是无法达到目的,脚本在此句出错,因此最后列出的结果不对。
哪位高手帮忙?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-15 13:42 , Processed in 0.040021 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表