向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传入参数的处理1. $# 传递到脚本的参数个数2. $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个3. $$ 脚本运行的当前进程ID号4. $...

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

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

shell--传入参数的处理

参数处理-Shell传入参数的处理 1. $# 传递到脚本的参数个数 2. $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 3. 脚本运行的当前进程ID...

Shell脚本中参数传递方法常用有8种

Shell脚本中参数传递方法常用有8种 1. $# 传递到脚本的参数个数 2. $* 以一个单字符串显示所有向脚本传递的参数变量。与位置变量不同,此选项参数可超过9个 3. $$ 脚...
  • splenday
  • splenday
  • 2016年01月23日 18:29
  • 11038

shell -e -d等参数说明

-e filename 如果 filename存在,则为真 ,可检测文件和目录是否存在 [ -e /var/log/syslog ] -d filename 如果 filename为目录,则为真 ...

Shell脚本学习-命令行参数处理

命令行参数处理 转自http://blog.chinaunix.net/uid-21505614-id-2173248.html 必须要要知道几个变量,     *    $0 :即命令本身,相当...

交互式输入shell参数

Let's write a script that reads input interactively and uses this script for automation examples: #...
  • elbort
  • elbort
  • 2012年06月15日 13:12
  • 3162

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

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

linux shell脚本读取用户输入的参数

$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1是传递给该shell脚本的第一个参数 $2是传递给该shell脚本的第二个参数 $@ 是传给脚本的所有参数的列表 例如: #...

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

大家都知道普通的bash命令后边可以跟任意的参数,那我们自己编写的脚本是否也支持传递参数呢?答案当然是肯定的 执行“vim test.sh”创建一个新的shell脚本。脚本test.sh的内容如下: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:向shell脚本中传入参数
举报原因:
原因补充:

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