上一次学到了shell脚本的运算符,由于诸多因素的影响,停了好长时间.
现在开始继续学习,不求多,每周学习一些再输出一些笔记就OK了.
本次内容稍微少些:
*注释
*字符串
*数组

Shell 注释

shell里注释非常简单 "#"

# this is comment
# 注释说明开始
# 注释说明结束

字符串

shell 中字符串的定义可以使用如下方式

  • 单引号
  • 双引号
  • 不用引号
方式优点缺点
单引号 原样输出,变量无效,转义符无效
双引号可以有变量,转义符

字符串常用操作

拼接字符串

lang='Java'
hello_world1="hello, ${lang} !"
hello_world2="hello, "${lang}" !"

字符串长度

lang="Java"
echo ${#lang}

截取字符串

lang="Hello,Java"
#${string: start :length}
#string 是要截取的字符串,start 是起始位置(从左边开始,从 0 开始计数),length 是要截取的长度(省略的话表示直到字符串的末尾)
echo ${lang:0:4} #Hell

查找字符串

lang="Hello,Java"
#反引号,查找下标从1开始,找不到返回0
echo `expr index "$lang" Java` #7

数组

bash仅支持一维数组,不限定数组大小,利用下标访问,从0开始

定义数组

#数组元素用“空格”符号分割开
array1=(val0 val1 val2)
#也可如下定义
array2=(
val0
val1
val2
)
#或者直接定义数组各个下标值
array3[0]=val0
array3[1]=val1
array3[3]=val3

读取数组

#!/bin/sh
langs=("C" "C++" "Java" "C#")
v_cpp=${langs[1]}
echo "second lang: ${langs[1]}"

获取数组中的所有元素

${array_name[*]}
${array_name[@]}

数组长度

# 取得数组元素的个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 取得数组单个元素的长度
lengthn=${#array_name[n]}