• 【转】shell脚本中如何传入参数


    (1)直接用$1,$2取传入的参数
    vim /root/test.sh
    #!/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

    #sh test.sh stop 

    $1取到了stop这个参数,接收来自命令行传入的参数,第一个参数用$1表示,第二个参数$2表示,。。。以此类推。
    注意:$0表示脚本文件名。另外一个在shell编程中经常用到 的是“$@”这个代表所有的参数,你可以用一个循环来遍历这个参数.

    (2)使用for循环取所有输入的参数
    vim /root/test.sh
    #!/bin/bash
    for args in $@
    do
       echo $args
    done

    把上面这段代码录入保存为test.sh,授限可执行chmod +x test.sh:
    #sh /root/test.sh arg1 arg2 arg3 arg4 xxx
    输出参数:
    arg1
    arg2

    arg3
    arg4
    xxx

    这个例子中,我们用到了之“$@”,它代表了所有的命令行参数。
    在这里用for对其进行遍历,系统迭代地从$@中取出命令行参数把他放到args中,最后使用echo $args进行输出。


    (3)遍历当前目录下的文件
    for更经常用到的是遍历目录,下面的例子用于列出当前目录下的所有文件和文件夹的名称
    不用编辑脚本,在命令行,直接输入以下命令:
     for file in *
     do
     echo $file
     done
     
    这里用*代表当前目录,列出的是所有的文件和文件夹的名称,在这里,文件夹和文件你是分不出来的,如果你需要,你应该用if [-d ${file}]来做一下判断。
    只输出目录名:
    vim /test.sh
    for file in *
    do
       if [ -d $file ]; then
         echo $file
       fi
    done
                              

    (4)对于文件遍历,可以在 “in” 后面接上多个表达式。也就是说,你可以一次在遍历多个目录。
    下面这段代码能把当前目录下/etc文件夹和/var文件夹里的文件
    #!/bin/bash
    for args in /etc/* /var/*
    do
      echo "print ${args} "
    done


    ---------------------
    作者:openbox2008
    来源:CSDN
    原文:https://blog.csdn.net/openbox2008/article/details/80526329
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    一行语句让你的浏览器变成记事本
    为啥只有IPv4和IPv6,没有IPv5呢?
    在线C++编译器
    怎么让Visual Studiot在遇到一个project编译错误时停止编译其它project
    C#的继承类中static constructor的调用问题
    C#中静态构造函数导致的一个deadlock
    一个C++的轻量级的logger实现
    一个免费轻量的Mathematica替代Mathics
    实时交通路况
    构建WAP邮件发送服务器
  • 原文地址:https://www.cnblogs.com/yanwuliu/p/10032640.html
Copyright © 2020-2023  润新知