分页: 1 / 1
关于getopts命令的使用
发表于 : 2011-10-25 22:30
由 xjx0524
看了不少网上的教程 基本都是一样的
现在有几个问题想问下大家
1)这个命令一定用while循环么 它是怎么结束的
2)假如我运行 1.sh -v f1 f2 ,那么f1 f2这两个参数保存在哪?
3)我得到参数v 想执行某个命令 是不是直接在v)后面写
如果我想运行 1.sh f1 f2 没有-参数运行其他命令又要加一些什么东西?
while getopts vn: c
do
case $c in
v)
;;
esac
done;
Re: 关于getopts命令的使用
发表于 : 2011-10-25 23:18
由 xjx0524
有没有人说一下啊 哪怕就1条也行啊 谢谢了
Re: 关于getopts命令的使用
发表于 : 2011-10-25 23:21
由 lilydjwg
Re: 关于getopts命令的使用
发表于 : 2011-10-26 8:34
由 eexpress
bash类,不适合做复杂的事情的。
Re: 关于getopts命令的使用
发表于 : 2011-10-26 17:22
由 xjx0524
Re: 关于getopts命令的使用
发表于 : 2011-10-26 17:23
由 xjx0524
eexpress 写了:bash类,不适合做复杂的事情的。
但是我们作业必须要用getopts
Re: 关于getopts命令的使用
发表于 : 2011-10-26 17:53
由 lilydjwg
xjx0524 写了:
没有getopts的手册页条目
代码: 全选
>>> pacman -Qo /usr/share/man/man1/getopts.1p.gz
/usr/share/man/man1/getopts.1p.gz 属于 man-pages 3.35-1
Re: 关于getopts命令的使用
发表于 : 2011-10-27 12:47
由 xjx0524
lilydjwg 写了:xjx0524 写了:
没有getopts的手册页条目
代码: 全选
>>> pacman -Qo /usr/share/man/man1/getopts.1p.gz
/usr/share/man/man1/getopts.1p.gz 属于 man-pages 3.35-1
pacman什么意思 是命令么 我在cygwin里用怎么没有这个命令
Re: 关于getopts命令的使用
发表于 : 2011-10-27 13:03
由 lilydjwg
xjx0524 写了:lilydjwg 写了:xjx0524 写了:
没有getopts的手册页条目
代码: 全选
>>> pacman -Qo /usr/share/man/man1/getopts.1p.gz
/usr/share/man/man1/getopts.1p.gz 属于 man-pages 3.35-1
pacman什么意思 是命令么 我在cygwin里用怎么没有这个命令
pacman 是 ArchLinux 的包管理器。我使用包管理器查得 getopts 的 man 文档位于 man-pages 这个包中。
PS: 你使用 Cygwin 学习 Linux 命令?鉴于你是 Windows 用户,我可以理解你能忍受 Cygwin 的低执行效率(我觉得主要是因为 Unix 倾向于使用多进程而 Windows 的进程创建太慢),但我要告诉你:最好不要用 Cygwin 做这种事,因为它是有 bug 的,比如 ssh 使用的流是文本模式的操作,比如正在使用中的文件不能被删除,比如文件名不区分大小写。如果不想装 Linux 系统的话,建议使用虚拟机或者远程登录。
另外,有兴趣研究 Windows 上使用类 Unix 命令的可以帮忙看看这个 SFU(
http://www.microsoft.com/download/en/de ... =en&id=274 )。我这里 VBox 不给力安装过程中总是崩溃。。。。
Re: 关于getopts命令的使用
发表于 : 2011-10-27 22:50
由 fnan
#一个例子:
while getopts ":f:d:rh" optname
do
case "$optname" in
"h")
echo -e $vg_echo|more
echo
exit 0
;;
"f")
env_word_file=$OPTARG
echo "单词文本=$env_word_file"
;;
"d")
vg_wave_directory=$OPTARG
echo "wav文件地址=$vg_wave_directory"
;;
"r")
echo "删除配置文件?y/n"
read -n1 vg_read
if [[ $vg_read = "y" ]];then
echo
if [[ -f ~/$vg_configuration_file ]];then
rm ~/$vg_configuration_file && echo "已删除$vg_configuration_file配置文件。"
else
echo "无配置文件。"
fi
exit 0
fi
;;
"?")
echo "未知选项? "$OPTARG
exit 1
;;
":")
echo "选项 "$OPTARG" 缺参数!"
exit 1
;;
"*")
echo "发生未知错误!"
exit 1
;;
esac
done
#很好的教程:
http://www.ibm.com/developerworks/cn/li ... eters.html
#看这部分: 选项和 getopts
Re: 关于getopts命令的使用
发表于 : 2011-10-27 22:59
由 adam8157
Re: 关于getopts命令的使用
发表于 : 2011-10-28 0:15
由 fnan
xjx0524 写了:看了不少网上的教程 基本都是一样的
现在有几个问题想问下大家
1)这个命令一定用while循环么 它是怎么结束的
2)假如我运行 1.sh -v f1 f2 ,那么f1 f2这两个参数保存在哪?
3)我得到参数v 想执行某个命令 是不是直接在v)后面写
如果我想运行 1.sh f1 f2 没有-参数运行其他命令又要加一些什么东西?
while getopts vn: c
do
case $c in
v)
;;
esac
done;
#教程没这么详细的,就说两句:
1.getopts返回true或false,所以用while循环。
2.f1 f2 在$* 和$@ (所有参数在$*和 $@,不管有没有-)
3.是
#getopts不管无-的参数,在$@中找,或用$1,$2...
Re: 关于getopts命令的使用
发表于 : 2011-11-05 22:33
由 xjx0524
前一阵忙期中考试 这个就没在看 现在我还有几个问题
1)怎么判断有没有-参数 因为作业要求实行的命令有的带 有的不带
2)后面带冒号的可以接参数 存在OPTARG里 那要是想接两个参数呢?
3)怎么实现 命令是 x.sh -数字 脚本里用那个数字操作 就像head tail那样
fnan 写了:xjx0524 写了:看了不少网上的教程 基本都是一样的
现在有几个问题想问下大家
1)这个命令一定用while循环么 它是怎么结束的
2)假如我运行 1.sh -v f1 f2 ,那么f1 f2这两个参数保存在哪?
3)我得到参数v 想执行某个命令 是不是直接在v)后面写
如果我想运行 1.sh f1 f2 没有-参数运行其他命令又要加一些什么东西?
while getopts vn: c
do
case $c in
v)
;;
esac
done;
#教程没这么详细的,就说两句:
1.getopts返回true或false,所以用while循环。
2.f1 f2 在$* 和$@ (所有参数在$*和 $@,不管有没有-)
3.是
#getopts不管无-的参数,在$@中找,或用$1,$2...
Re: 关于getopts命令的使用
发表于 : 2011-11-07 8:56
由 fnan
#参数的话只要getopts,$@,shift三板斧就差不多了:
kose3@kose3-laptop:~$ cat tmp1.sh
#!/bin/bash
while getopts "f:n:h" optname
do
echo "选项参数:-$optname $OPTARG"
done
echo "**********************"
shift $(($OPTIND-1))
for i in "$@"
do
echo "非选项参数:$i"
done
kose3@kose3-laptop:~$ ./tmp1.sh -f f1 -f fx -n 123 -h f2 f3
选项参数:-f f1
选项参数:-f fx
选项参数:-n 123
选项参数:-h
**********************
非选项参数:f2
非选项参数:f3
kose3@kose3-laptop:~$
3)怎么实现 命令是 x.sh -数字 脚本里用那个数字操作 就像head tail那样
#不如用 -n 数字 形式,或者用非选项参数,直接写数字。
Re: 关于getopts命令的使用
发表于 : 2011-11-13 10:06
由 tusooa
这不如用OptionParser了啊。