shell之数组与符号

数组

定义数组:ISP=(10.100.1.10 10.100.1.10 10.100.1.10)
显示数组的所有元素:echo ${ISP[@]} #返回内容为:10.100.1.10 10.100.1.10 10.100.1.10
显示数组元素个数:echo ${#ISP[@]} #返回内容为:3
显示数组的第一个元素:echo ${ISP[0]}#返回内容为:10.100.1.10

转义与引用

特殊字符:一个字符不仅有字面意义,还有元意(meta-meaning)
比如:注释(#)、分号(;)、转义符号()、和引号(" ')
转义: 单个字符前的转义符号
\n\r\t :单个字母的转义
$ " \ :单个非字母的转义
引用符号:双引号(")、单引号(')、反引号(`)

运算符

赋值运算符 := 赋值运算符,用于算数赋值和字符串赋值,使用unset取消为变量的赋值, = 除了作为赋值运算符还可以作为测试操作符。
算术运算符:基本运算符(+ - * / ** %),使用expr进行运算(expr 4+5)
数字常量:let "变量名 = 变量值 ",变量值使用0开头为八进制,变量值使用0x开头为十六进制。
双圆括号:let命令的简化, (( a =10)) 、((a++))、echo $((10+20))

特殊符号

引号: 完全引用(')、部分引用(")、执行命令(`)
括号:

  • 圆括号: () (()) $()
    单独使用圆括号会产生一个子shell(xyz=123)
    数组初始化:IPS=(ip1 ip2 ip3)

  • 方括号:[] [[]]
    单独使用方括号是测试(test)或数组元素功能
    两个方括号表示测试表达式

  • 尖括号 重定向符号:<>

  • 花括号
    输出范围 echo {0..9}
    文件复制 :cp /etc/passwd{,.bak}

运算和逻辑符号:算术运算符: +-*/% 、比较运算符:<>= 、逻辑运算符:&& || !

转义符号

其他符号

  • :通配符
    ?:条件测试或通配符
    $:取值符号
    | :管道符
    & :后台运行
    _ :空格

: 注释符

; :命令分隔符,case 语句的分隔符要转义 ;;
: :空指令
. 和source : 命令相同
~ :家目录
, 分隔符号

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容