Shell基础(六):位置参数及case分支

位置参数

标记
$0:脚本文件绝对路劲
$1-9:小于10位置参数标记
${10..}:大于10的位置参数标记
$#:参数总数
$*:展开成一个从 1 开始的位置参数列表。当它被用双引号引
   起来的时候,展开成一个由双引号引起来的字符串,包含了
   所有的位置参数,每个位置参数由 shell 变量 IFS 的第一个
   字符(默认为一个空格)分隔开。
$@:展开成一个从 1 开始的位置参数列表。当它被用双引号引
   起来的时候,它把每一个位置参数展开成一个由双引号引起
   来的分开的字符串。
shift:多参数列表逐一访问
用法
每次 shift 命令执行的时候,变量 $2 的值会移动到变量 $1 中,
变量 $3 的值会移动到变量$2 中,依次类推。变量 $# 的值也会相应的减 1
举例
#!/bin/bash
# posit-param2: script to display all arguments
count=1
while [[ $# -gt 0 ]]; do
    echo "Argument $count = $1"
    count=$((count + 1))
    shift
done

case分支

基本语法
case word in
    [pattern [| pattern]...) commands ;;]...
esac
模式匹配 pattern

这里写图片描述

举例
#!/bin/bash
read -p "enter word > "
case $REPLY in
    a|A) echo "is a or A." ;;
    [[:alpha:]]) echo "is a single alphabetic character." ;;
    [ABC][0-9]) echo "is A, B, or C followed by a digit." ;;
    ???) echo "is three characters long." ;;
    *.txt) echo "is a word ending in '.txt'" ;;
    *) echo "is something else." ;;
esac
匹配多个测试条件
#!/bin/bash
# case4-2: test a character
read -n 1 -p "Type a character > "
# ;;& 用于匹配多个测试条件,匹配到一个后继续匹配下一个而不是直接退出。
case $REPLY in
    [[:upper:]]) echo "'$REPLY' is upper case." ;;&
    [[:lower:]]) echo "'$REPLY' is lower case." ;;&
    [[:alpha:]]) echo "'$REPLY' is alphabetic." ;;&
    [[:digit:]]) echo "'$REPLY' is a digit." ;;&
    [[:graph:]]) echo "'$REPLY' is a visible character." ;;&
    [[:punct:]]) echo "'$REPLY' is a punctuation symbol." ;;&
    [[:space:]]) echo "'$REPLY' is a whitespace character." ;;&
    [[:xdigit:]]) echo "'$REPLY' is a hexadecimal digit." ;;&
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值