笔记:

字符串处理

截取字符串的最后一个字符

注意: 冒号后面必须添加一个空格, 否则无效

string="abcd"

# ${string:空格-1}
echo ${string: -1}

可以通过使用 bash 对数组的定义分割字符串

如果字符串是 "a b c" 本身就由空格分割, 可以直接使用数组定义将其分割 array=("a b c")

如果不是空格, 可使用变量字符串替换写法将分割符改为空格以达到分割目的

变量字符串替换写法: ${变量名//被替换字符/替换字符}

例:

string="https://www.voiblog.top/category/computer/"

# ${string////空格}
# 此时, spiltArray 已经存放好了分割后的字符串了
spiltArray=(${string//// })

数组

追加与最后

追加数组元素:

# 通过 += 来追加
array=("1" "2" "3")

array+=("4")

获取最后一个数组元素:

  1. 先获取数组长度 ${#数组名[@]}
  2. 然后通过长度减一获取最后一个元素的下标 $[ ${#数组名[@]} - 1 ]
  3. 最后通过下标获取数组的最后一个元素 ${数组名[下标]}
array=("1" "2" "3")
lastIndex = $[ ${#array[@]} -1 ]

# 最后一个元素
echo ${array[$lastIndex]} 

函数

返回值

bash 中的函数虽然有 return 语句, 但只能返回 0~255 的整数值

可以通过 echo 来让函数返回其他数据

testFunc(){
    a=555
    b=777
    echo $[ $a + $b ]
}

# 获取函数返回值
result=$(testFunc)

参数处理

假设我们想写一个可以处理选项参数的 shell 脚本( 类似于 -p 参数 --port=参数 )

可以用到 以下方法:

  • getopts unix 自带 (仅能实现单字符选项的解析)
  • getopt shell 内置

getopts

getopts 专用于处理短选项(单字符选项)

需要用到的变量:

  • $OPTIND
  • OPTARG

用法: getopts optstring name [args]

optstring 包含需要识别的选项字符, 如果字符后面有一个冒号, 则表示该选项必须跟一个参数

optstring的最开头如果是一个冒号, 则启动 slient 模式, 不打印错误, 否则打印错误

每一次调用 getopts 会将选项名放入定义的 name 变量中, 通过 $变量名 访问

[args] 则为实际参数, 例如: -p 8080 -i 192.168.1.1

# 保存着下一个待处理的参数下标的变量, 初始值为1
OPTIND

# 保存选项所对应的参数
OPTARG

使用用例:

# test.sh
while getopts o: opt
do
    echo -e "参数名: $opt \n参数值: $OPTARG"
done
如果 -o 后面没接参数, 那么 $opt 的值为 ? $OPTARG 的值为空
最后修改:2024 年 03 月 30 日
如果觉得我的文章对你有用,请随意赞赏