linux学习之shell脚本 ------- 脚本参数传递

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]

今天再来看一下如何向shell脚本传递参数,需要掌握两个命令,一个是 shift命令,另一个是getopts。

脚本参数传递

  shift命令

   用法:

    shift n 每次将参数位置向左偏移n位

   假如我们要实现统计多个文件的总行数,就可以用到这个shift命令了,如下:

opt2.sh

#!/bin/bash
#op2  static files total lines;
staticlines(){
   echo "static:`basename $0` filenames"
   exit
}
totalline=0
if [ $# -lt 2 ]
then
    staticlines
fi
while [ $# -ne 0 ]
do
    line=`cat $1 | wc -l`
    echo "$1:${line}"
    totalline=$[ $totalline+$line ]
    shift
done
echo "-------------------------------------"
echo "totalline:${totalline}"

   给予可执行权限,执行:

[email protected]:~/develop/worksapce/shell_workspace$ chmod a+rx opt2.sh
[email protected]:~/develop/worksapce/shell_workspace$ ./opt2.sh
static:opt2.sh filenames
[email protected]:~/develop/worksapce/shell_workspace$ ./opt2.sh lsout.txt
static:opt2.sh filenames
[email protected]:~/develop/worksapce/shell_workspace$ ./opt2.sh lsout.txt name.txt
lsout.txt:18
name.txt:4
-------------------------------------
totalline:22
[email protected]:~/develop/worksapce/shell_workspace$ ./opt2.sh lsout.txt name.txt while_test1.sh
lsout.txt:18
name.txt:4
while_test1.sh:6
-------------------------------------
totalline:28

   通过shift 命令,我们可以很容易地实现统计log等信息。

  getopts命令

   该命令可以获得多个命令行参数。

   还是一个脚本来分析getopts的用法

optsget.sh

#!/bin/bash
#optsget
ALL=false
HELP=false
FILE=false
VERBOSE=false
while getopts ahfvc: OPTION
do
     case $OPTION in
     a)
         ALL=true
         echo "ALL is $ALL"
         ;;
     h)
         HELP=true
         echo "HELP is $HELP"
         ;;
     f)
         FILE=true
         echo "FILE is $FILE"
         ;;
     v)
         VERBOSE=true
         echo "VERBOSE is $VERBOSE"
         ;;
     c)
         c=$OPTARG
         echo "c valuse is $c"
         ;;
     \?)
         echo "`basename $0` -[a h f v] -[c value]"
         ;;
      esac
done

   给予可执行权限,执行结果如下:

[email protected]:~/develop/worksapce/shell_workspace$ ./optsget.sh -a
ALL is true
[email protected]:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f
ALL is true
FILE is true
[email protected]:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f -h
ALL is true
FILE is true
HELP is true
[email protected]:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f -h -v
ALL is true
FILE is true
HELP is true
VERBOSE is true
[email protected]:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f -c
ALL is true
FILE is true
./optsget.sh: 选项需要一个参数 -- c
optsget.sh -[a h f v] -[c value]
[email protected]:~/develop/worksapce/shell_workspace$ ./optsget.sh -a -f -c jesson
ALL is true
FILE is true
c valuse is jesson

  不难看出,可以通过getopts命令取得多个参数,而且还可以为每个参数指定值,在需要指定值的参数后加:即可。

时间: 2024-08-07 00:04:07

linux学习之shell脚本 ------- 脚本参数传递的相关文章

linux下的shell和脚本

1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/sh).Bourne Again Shell(/bin/bash).C Shell(/usr/bin/csh).K Shell(/usr/bin/ksh).Shell for Root(/sbin/sh),等等 第一个Unix shell是由肯·汤普逊,仿效Multic上的shell所实现出来,称为s

linux学习之路之脚本编程知识点

脚本编程知识点 1.获取变量中字符的长度 ${#VARNAME} 2.变量赋值 ${parameter:-word}:如果parameter为空或者未定义,则整个表达式为word:否则表达式值为parameter ${parameter:+word}:如果parameter为空或者未定义,则整个表达式为空:如果parameter有值,则整个表达式为word ${parameter:=word}:如果parameter为空或者未定义,则整个表达式值为parameter:否则整个表达式值为word

linux学习之shell练习

linux学习之shell练习 1.描述shell程序的运行原理(可附带必要的图形说明): 2.总结shell编程中所涉及到的所有知识点(如:变量.语法.命令状态等等等,要带图的哟): 总结文章:http://pizimsn.blog.51cto.com/7002551/1697671 3.总结课程所讲的所有循环语句.条件判断的使用方法及其相关示例:(if (jpg|png is not exist):echo "You say a XX") 总结文章:http://pizimsn.b

Linux学习之Shell基础

一.Shell概述 1.Shell概述: Shell:壳,Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面级程序,用户可以用Shell来启动.挂起.停止甚至是编写一些程序.类似于翻译,相当windows的操作界面 Shell同时还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux命令. 2.Shell的分类: Bourne Shell:从1979起Unix就开始使用的Bourne

Linux学习笔记——Shell基础(八)

+++++++++++++++++++++++++ +++++Shell基础+++++++++++++++++++++++++++++++ 1. Shell概述 Shell定义: Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至编写一些程序. Shell还是一个功能相当强大的编程语言,易编写.调试.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令. Shell分类: Bo

linux 学习10 shell 基础

10.1 Shell概述 1.Shell是什么 ?Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一些程序. ?Shell还是一个功能相当强大的编程语言,易编写,易调试,灵活性较强.Shell是解释执行的脚本语言,在Shell中可以直接调用Linux系统命令. 2.Shell的分类 ?Bourne Shell:从1979起Unix就开始使用Bourne Shell,Bourne Shell的主文

linux学习之shell脚本 ------- shell函数

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天来看一下Shell的函数. Shell函数 函数定义 shell允许将一组命令集或语句形成一个可用块,这些块称为Shell函数. 函数定义格式: 函数名(){ 命令1 -- } 或 function 函数名(){ -- } 函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中. 如下面的脚本就是一个只包含函数的单独文件. #!/bin/bash #fu

linux学习之shell脚本 ------- 输入与输出

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 前面介绍了Shell脚本的基础和运算符等,今天再来看一下关于Shell脚本的输入与输出. Shell输入与输出的一些命令: echo read cat 管道 tee exec Shell输入与输出的一些概念: 文件重定向 标准输入.输出和错误 合并标准输出和标准错误 使用文件描述符 下面,我们挨个看每个命令的用法: 输入输出命令的用法: 1. echo 该命令的作用是可以显

linux学习之shell脚本 ------- 控制流结构

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天开始学一些同其他高级语言一样的shell流控制结构 流控制语句: 1. if语句 语句格式: if condition1 then command1 else condition2 then command2 else command3 fi 注:if语句必须以fi终止. 如果没有condition2,则if语句可以简化为如下: if condition then co