分页: 1 / 1
怎么向linux脚本传递参数
发表于 : 2012-02-18 9:21
由 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怎么办?怎么才能智能检测选项的内容?
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 9:24
由 枫叶饭团
用for循坏检测
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 9:24
由 ljj_jjl2008
好像需要你自己写if语句判断。
没有好法。
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 9:40
由 NewUserFF
晕,不会 吧,shell又一次让我失望了

Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 10:44
由 MaskRay
代码: 全选
while getopts abc name; do
echo $name
done
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 14:06
由 tusooa
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
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 14:07
由 tusooa
复杂点,用bash-libraries的OptionParser
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 14:53
由 liu滔
用C语言写吧,调用getopt函数
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 19:02
由 mswwjick
用case就可以了
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-18 22:05
由 自由建客
/etc/init.d/* 很典型的例子!
Re: 怎么向linux脚本传递参数
发表于 : 2012-02-19 22:25
由 cykun555
MaskRay 写了:代码: 全选
while getopts abc name; do
echo $name
done
我觉得这个是正确的
