shell脚本中如何传入参数

Posted 学而时习之,不亦说乎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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编程中经常用到 的是“[email protected]”这个代表所有的参数,你可以用一个循环来遍历这个参数.

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

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

arg3
arg4
xxx

这个例子中,我们用到了之“[email protected]”,它代表了所有的命令行参数。
在这里用for对其进行遍历,系统迭代地从[email protected]中取出命令行参数把他放到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
版权声明:本文为博主原创文章,转载请附上博文链接!

























































以上是关于shell脚本中如何传入参数的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本中如何传入参数

如何在shell中执行一个模块,这个模块需要传入参数

调用shell脚本 怎么像调用java方法那样传入参数

[Python]在python中调用shell脚本,并传入参数-02python操作shell实例

linux shell 脚本中几个特殊参数含义

shell脚本参数中有空格