导读

本文为博文 linux —— shell 编程(整体框架与基础笔记)的第4小点的拓展。(本文所有语句的测试均在 Ubuntu 16.04 LTS 上进行)


目录
  1. 再识变量
  2. 函数
  3. 条件语句
  4. 循环语句
1、再识变量

Shell 中有3种变量:用户变量、位置变量、环境变量

用户变量

用户变量就是用户在Shell编程过程中定义的变量,分为全局变量和局部变量。默认情况下,用户定义的变量为全局变量,如果要指定局部变量,需要使用local限定词

1)Shell 中的特殊符号:

特殊字符列表如下:

~    主目录,相当与$HOME

`     命令替换,如 echo `pwd`

#    脚本注释

$    变量表达式符号

&    后台作业,将此符号置于命令末端则让命令与后台运行

*    字符串通配符

(  )   ( 启动子Shell    ) 停止子Shell

\    转义下一个字符

|    管道

[  ]    [ 开始字符集通配符号  ] 结束字符集通配符号

{  }   { 开始命令块    }结束命令块

;    Shell 命令分隔符     

'  "    强引用  和 弱引用

> <    输出重定向 和 输入重定向

/      路径名目录分隔符

?      单个任意字符

!      管道行逻辑 NOT

变量的表达方式 $var 实际上是 ${var} 的简写形式,{}的形式好处如: ${10} ${Var}_ 以及可以进行下面的字符串高级操作

2)字符串操作符

字符串处理运算符允许你完成如下操作: 

  •  保证变量存在且有值
  • 设置变量的默认值
  • 捕获未设置变量而导致的错误
  • 删除匹配模式的变量的值部分内容

替换运算符:
${varname:-word}    varname 存在且非null,返回varname , 否则返回word  (未定义返回默认值)
${varname:=word}     varname 存在且非null,返回varname , 否则返回word,并且将varname 置为word (未定义设置默认值)
${varname:?message}  varname 存在且非null,返回varname , 否则打印 message , 并退出当前脚本。
              message 默认为parameter null or not set      (捕捉未定义而导致的错误)
${varname:+word}    varname 存在且非null,返回 word; 否则返回 null     (测试变量是否存在)

模式匹配运算符:
${varname#pattern}    如果模式匹配变量值取值的 开头 处,则删除匹配的最 短 部分,并返回剩下部分
${varname##pattern}    如果模式匹配变量值取值的 开头 处,则删除匹配的最 长 部分,并返回剩下部分
${varname%pattern}     如果模式匹配变量值取值的 结尾 处,则删除匹配的最 短 部分,并返回剩下部分
${varname%%pattern}    如果模式匹配变量值取值的 结尾 处,则删除匹配的最 长 部分,并返回剩下部分
${varname/pattern/str}    替换第一个匹配的部分, 如果模式以#开头则匹配varname开头,%开头 则结尾
${varname//pattern/str}   替换所有匹配的部分
                str 为空则删除匹配部分,varname 为@或* 则依次应用于每个参数并拓展为结果列表

 例子:line="arg=123"  : echo ${line%=*}   echo ${line#*=}

位置变量

$#    $?   $0    $*     分别表示传递给本脚本的 参数个数、上一条命令的返回值、第一个参数、所有参数

shift :  Shell 内置命令,可以截去参数列表最左边一个

#!/bin/bash
# 依次读取打印文件
while [ -e $1 ];
do
    cat $1
    shift
done
shift.sh

相关文章:

  • 2021-06-19
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-07
  • 2022-12-23
  • 2021-07-15
  • 2021-05-17
猜你喜欢
  • 2021-10-03
  • 2021-07-03
  • 2021-12-17
  • 2022-12-23
  • 2021-10-19
  • 2021-09-23
相关资源
相似解决方案