zoukankan      html  css  js  c++  java
  • 向shell脚本中传入参数

    写一个 程序名为    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

  • 相关阅读:
    Windows2012修改光驱盘符
    推薦幾個海外片源站
    Learning Puppet — Variables, Conditionals, and Facts
    红灯是否可以掉头?
    Windows Server 2008
    Learning Puppet — Resource Ordering
    Learning Puppet — Manifests
    Learning Puppet — Resources and the RAL
    quotas and disk replace on netapp
    美国夏令时与冬令时的区别
  • 原文地址:https://www.cnblogs.com/JAYIT/p/6230591.html
Copyright © 2011-2022 走看看