笔记:
字符串处理
截取字符串的最后一个字符
注意: 冒号后面必须添加一个空格, 否则无效
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 ]
- 最后通过下标获取数组的最后一个元素
${数组名[下标]}
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
的值为空