向shell脚本中传入参数

转载 2013年08月16日 14:48:34
写一个 程序名为    test.sh    可带参数为 start 和 stop

执行  test.sh start
执行  start 内容的代码

执行 test.sh stop

执行 stop 内容的代码



#!/bin/bash
if [ $1 == "start" ]
  then   
  echo "do start"
  command groups
  elif [ $1 == "stop" ]
  then
  echo "do stop"
  command group
  else
  echo "Please make sure the positon variable is start or stop."
fi




自变量的接收
接收来自命令行传入的参数,第一个参数用$1表示,第二个参数$2表示,。。。以此类推。注意:$0表示脚本文件名。另外一个在shell编程中经常用到 的是“$@”这个代表所有的参数,。你可以用一个循环来遍历这个参数。如果用java来类比的话,可以把$@看作是man函数中定义的那个数组

for examples:

bash里的语句总是那么的人性化,十分的接近自然语言,在for语句中几乎可以迭代任何类似与集合的数据类型(或许这样个说法不对,但我确实想不到更好的词来代替)。
看一个例子:
#!/bin/bash
for args in $@
do
        echo $args
done

把上面这段代码录入保存为showargs.sh设置为可执行(chmod +x showargs.sh)执行:

$ ./showargs.sh arg1 arg2 arg3 arg4
arg1
arg2
arg3
arg4
这个例子中,我们用到了之“$@”,它代表了所有的命令行参数。在这里用for对其进行遍历,系统迭代地从$@中取出命令行参数把他放到args中,最后使用echo $args进行输出。
for更经常用到的是遍历目录,下面的例子用于列出当前目录下的所有文件和文件夹的名称
$ for file in *
> do
> echo $file
> done
这里用*代表当前目录,列出的是所有的文件和文件夹的名称,在这里,文件夹和文件你是分不出来的,如果你需要,你应该用if [-d ${file}]来做一下判断。
对于文件遍历,更有趣的是,你可以在 “in” 后面接上多个表达式。也就是说,你可以一次在遍历多个目录。
下面这段代码能把当前目录下go文件夹和do文件夹里的文件复制到fo文件夹下
#!/bin/bash
for args in ./go/* ./do/*
do
  cp ${args} ./fo
  echo "copying ${args} to ./fo/${args}"
done

shell中常见参数及判断命令

Shell常用特殊变量经常会在shell命令中,看到$0, $#, $*, $@, $?, $$这样的取值,这些代表什么呢? 变量 含义 $0 当前脚本的文件名 $n 传递给...
  • u014034049
  • u014034049
  • 2017年03月17日 14:09
  • 1037

shell--传入参数的处理

 参数处理-Shell传入参数的处理1. $# 传递到脚本的参数个数2. $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个3. $$ 脚本运行的当前进程ID号4. $...
  • qzwujiaying
  • qzwujiaying
  • 2011年04月29日 10:00
  • 117054

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第...
  • u011341352
  • u011341352
  • 2016年11月18日 13:05
  • 10238

shell基本类型和参数传递

【shell字符串】 字符串可以用单引号,也可以用双引号,也可以不用引号。 1.        单引号 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单...
  • sinat_26230689
  • sinat_26230689
  • 2016年06月21日 20:32
  • 551

shell脚本 自定义传入参数选项

在使用现有的如grep、awk等shell命令时,我们发现都会有一种形式,-r 参数,其实这种形式在我们自己编写的脚本中也可以定义 主要有三种方式处理命令行参数, 1、手工处理方式 2、getopts...
  • mm_bit
  • mm_bit
  • 2015年09月14日 15:29
  • 2453

shell脚本处理长参数的模板

shell脚本处理长参数的模板一个shell模板,处理命令行参数,支持长短参数:#!/bin/bash # # FILE: kvm-clone-v2.sh # # DESCRIPTION: Clone...
  • cheungmine
  • cheungmine
  • 2015年05月21日 14:32
  • 1828

shell脚本参数

3.位置参数 就是从命令行中传进来的参数,$0, $1, $2, $3... $0就是脚本文件的名字,$1是第一个参数,$2为第2个...,参见[1](有$0的说明),$9 以后就需要打括号了,如${...
  • kevinx_xu
  • kevinx_xu
  • 2013年08月02日 11:43
  • 23971

如何给shell脚本传入参数小结

大家都知道普通的bash命令后边可以跟任意的参数,那我们自己编写的脚本是否也支持传递参数呢?答案当然是肯定的 执行“vim test.sh”创建一个新的shell脚本。脚本test.sh的内容如下: ...
  • beibei0921
  • beibei0921
  • 2015年04月26日 13:46
  • 5808

【shell学习】输入参数

获取shell脚本的输入参数,并且判断得到的参数。 #!/bin/bash #title: testPT.sh #atuhor: orangleliu #date: 2014-08-08 #des...
  • lzz957748332
  • lzz957748332
  • 2014年08月09日 00:24
  • 1783

shell函数【参数传递及输入输出】&内置函数

Linux——shell脚本基础3:shell函数【参数传递及输入输出】&内置函数   函数定义 1 退出状态 1 参数传递 2 标准IO 2 脚本调试 2 ...
  • imxiangzi
  • imxiangzi
  • 2015年12月21日 18:02
  • 6617
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:向shell脚本中传入参数
举报原因:
原因补充:

(最多只允许输入30个字)