shell参数处理模板

存一份模板,以后简单参数处理就用它了

#!/bin/bash
while getopts h:ms option #选项后面的冒号表示该选项需要参数
do
    case "$option" in
        h)
            echo "option:h, value $OPTARG"  #参数存在$optarg中
            echo "next arg index:$OPTIND";;
        m)
            echo "option:m"
            echo "next arg index:$OPTIND";;
        s)
            echo "option:s"
            echo "next arg index:$OPTIND";;
        \?) #当有不认识的选项的时候arg为?
            echo "Usage: args [-h n] [-m] [-s]"
            echo "-h means hours"
            echo "-m means minutes"
            echo "-s means seconds"
            exit 1;;
    esac
done
时间: 2024-10-06 23:09:27

shell参数处理模板的相关文章

Linux Shell参数替换

Linux Shell参数替换 2013-06-03 10:01 by 轩脉刃, 1816 阅读, 0 评论, 收藏, 编辑 Bash中的符号的作用是参数替换,将参数名替换为参数所代表的值.对于 来说,大括号是可选的,即A和 {A}代表同一个参数. ${}带冒号的有下面几种表达式: ${parameter:-word} 如果parameter为null或者未设置,整个参数替换表达式值为word ${parameter:=word} 如果parameter为null或者未设置,整个参数替换表达式值

Shell参数展开

参数展开(parameter expansion)是shell提供变量值在程序中使用的过程. 展开运算符 包括替换运算符和模式匹配运算符 替换运算符 运算符 替换说明 记忆 ${varname:-word} 若varname存在且非null,则返回其值:否则返回word. 空则返回word ${varname:=word} 若varname存在且非null,则返回其值:否则,设置varname的值为word,并返回其值.改变变量的值. 空则返回word,并改变变量值 ${varname:?mes

shell 参数

位置参数 所谓位置参数 (positional parameter) ,指的是 Shell 脚本的命令行参数 (argument) ;同时也表示在 Shell 函数内的函数参数.它们的名称是以单个的整数来命名.出于历史的原因,当这个整数大于 9 时,就应该以花括号( {} )括起来 : echo first arg is $1 echo tenth arg is ${10} 特殊变量参数 $# 提供传递到 Shell 脚本或者函数的参数总数. $*,[email protected] 一次表示所

Linux Shell参数扩展(Parameter Expansion)

本文主要参考:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_06_02 其他资料:http://www.ibm.com/developerworks/cn/linux/l-bash-parameters.html 参数扩展的表示形式为:${expression}.expression包括各种字符直到匹配上'}'.当出现以下情况时候'}'不会被检查来匹配: 1)在转义字符\之后,如\{

shell参数中空格

在使用shell传参数时. 解析参数时请不要用shift  action="$1" case "$action" in     status)         shift         [email protected]         exit $?     ;;     ...      *)         help         exit -1     ;; esac 因为就算有双引号,也无法再次传递. 而是应该确定的按参数追逐个传递.     stat

C++11的模板新特性-变长参数的模板

这个特性很赞,直接给例子吧,假如我要设计一个类,CachedFetcher内部可能使用std::map也可能使用std::unordered_map,也可能是其它的map,怎么设计呢?没有C++11变长模板之前这很费劲.. 因为map的模板参数可不是只有key,value两个啊,还有一些有默认参数的template参数... ? ? template<typename _Key, typename _Value, template<class _Kty, class _Ty, typename

shell参数 传递

$# 是传给脚本的参数个数 $0 是脚本本身的名字 $1 是传递给该shell脚本的第一个参数 $2 是传递给该shell脚本的第二个参数 [email protected] 是传给脚本的所有参数的列表 $* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个 $$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误 区别:@* 相同点:都是引用所有参数 不同点:只有在双引号中体现出来.假设在脚本运行时写了三个参数(分别存储在12 3

Linux - Shell - 参数获取

概述 参数 背景 复习一下 shell 脚本的参数获取 场景 os centos7 1. 参数: 基础 概述 简单描述 参数 1. 获取参数 获取 第一个 参数 获取参数 使用 ${num} 获取参数 ${1} 获取 第一个参数 代码 #!/bin/bash var1=${1} echo ${var1} 其他 可以尝试 ${2}, ${3} 等获取后续参数 默认情况下, 如果参数不足, echo 不会报错, 其他命令, 需要验证 2. 获取多个参数 问题1: 获取多个参数 一个一个获取参数, 如

linux命令(while,shell参数的用法)

#!/bin/bash while IFS=: read name1 name2 name3 name4 #IFS是从文件读取内容时指定的分割符号,将a中的内容以:分开的部分分别赋值给相应变量. do echo $name1 '|' $name2 '|' $name3 '|' $name4 done <a #反引号与$()的功能是命令替换,将反引号或$()中的字符串当作命令来执行,但是反引号中不能继续有反引号,而$()可以有. LS=`ls` echo $LS #单引号完全不解析命令,忽略所有特