怎么向linux脚本传递参数
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
- NewUserFF
- 帖子: 413
- 注册时间: 2010-11-19 22:55
怎么向linux脚本传递参数
比如说我有一个脚本,名为script.sh,然后有打算有几个选项,分别为-a, -b, -c
1.输入./script.sh -a时,执行echo "a"
2.输入./script.sh -b时,执行echo "b"
3.输入./script.sh -c时,执行echo "c"
4.输入./script.sh -abc时,执行echo "a"和echo "b"和echo "c"
......
我知道脚本中有个$1,可以取得命令参数的内容,但这个好像东西好像对于这个功能不是很好用,比如,如果我仅仅想实现前三个功能,很简单,检测$1是-a还是-b还是-c就可以了,但是如果用户输入的是-abc或者-a -b怎么办?怎么才能智能检测选项的内容?
1.输入./script.sh -a时,执行echo "a"
2.输入./script.sh -b时,执行echo "b"
3.输入./script.sh -c时,执行echo "c"
4.输入./script.sh -abc时,执行echo "a"和echo "b"和echo "c"
......
我知道脚本中有个$1,可以取得命令参数的内容,但这个好像东西好像对于这个功能不是很好用,比如,如果我仅仅想实现前三个功能,很简单,检测$1是-a还是-b还是-c就可以了,但是如果用户输入的是-abc或者-a -b怎么办?怎么才能智能检测选项的内容?
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
- ljj_jjl2008
- 论坛版主
- 帖子: 14256
- 注册时间: 2007-09-16 8:29
Re: 怎么向linux脚本传递参数
好像需要你自己写if语句判断。
没有好法。
没有好法。
闻到死太贵, 麦克价更高。 有了笨笨兔, 二者皆可抛。
+ 我的六轮折腾
+ 折腾6轮的结果(对40余种WM的测试和分析,多种DE和WM并存的方案)
+ 折腾的中间成果:可以独立运行的一个Wharf(图标化的启动菜单)
+ 强烈推荐----折腾的终极成果:一个自己开发的DE环境
+ 签名空闲链接位置招租
+ 我的六轮折腾
+ 折腾6轮的结果(对40余种WM的测试和分析,多种DE和WM并存的方案)
+ 折腾的中间成果:可以独立运行的一个Wharf(图标化的启动菜单)
+ 强烈推荐----折腾的终极成果:一个自己开发的DE环境
+ 签名空闲链接位置招租
- NewUserFF
- 帖子: 413
- 注册时间: 2010-11-19 22:55
Re: 怎么向linux脚本传递参数
晕,不会 吧,shell又一次让我失望了 

-
- 帖子: 61
- 注册时间: 2010-04-29 22:00
- 系统: Gentoo Linux ~amd64
- 联系:
-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
Re: 怎么向linux脚本传递参数
简单点,NewUserFF 写了:比如说我有一个脚本,名为script.sh,然后有打算有几个选项,分别为-a, -b, -c
1.输入./script.sh -a时,执行echo "a"
2.输入./script.sh -b时,执行echo "b"
3.输入./script.sh -c时,执行echo "c"
4.输入./script.sh -abc时,执行echo "a"和echo "b"和echo "c"
......
我知道脚本中有个$1,可以取得命令参数的内容,但这个好像东西好像对于这个功能不是很好用,比如,如果我仅仅想实现前三个功能,很简单,检测$1是-a还是-b还是-c就可以了,但是如果用户输入的是-abc或者-a -b怎么办?怎么才能智能检测选项的内容?
代码: 全选
#!/bin/bash
while [[ $# > 0 ]] ; do
if [[ "$1" = -* ]]; then
arg="${1#-}"
eval "$(sed -re 's/(.)/echo "\1"\n/g' <<< "$arg")"
fi
shift
done
代码: 全选
] ls -ld //
-
- 帖子: 6548
- 注册时间: 2008-10-31 22:12
- 系统: 践兔
- 联系:
- liu滔
- 帖子: 7214
- 注册时间: 2010-10-09 23:01
Re: 怎么向linux脚本传递参数
用C语言写吧,调用getopt函数
- mswwjick
- 帖子: 645
- 注册时间: 2009-01-28 21:42
Re: 怎么向linux脚本传递参数
用case就可以了
- 自由建客
- 帖子: 13468
- 注册时间: 2008-07-30 23:21
- 系统: Debian stable AMD64
Re: 怎么向linux脚本传递参数
/etc/init.d/* 很典型的例子!
-
- 帖子: 4
- 注册时间: 2011-04-26 22:23
Re: 怎么向linux脚本传递参数
我觉得这个是正确的MaskRay 写了:代码: 全选
while getopts abc name; do echo $name done
