Linux Shell 009-数组
2023-12-27 10:38:37
Linux Shell 009-数组
本节关键字:Linux、Bash Shell、数组
相关指令:echo、declare
数组的分类
Bash Shell中数组分为:普通数组和关联数组。
普通数组
只能使用整数作为数组索引(元素的下标)
普通数组的赋值
基本语法1: 数组名[索引]=值
基本语法2: 数组名=(值1 值2 值3 …)
普通数组使用示例
array[0]=v1
array[1]=v2
array[2]=v3
array[3]=v4
将文件中每一行赋值给array1数组
array1=(`cat /etc/passwd`)
array2=(`ls /root`)
array3=(harry amy jack "Miss Hou")
array4=(1 2 3 4 "hello world" [10]=linux)
普通数组的读取
基本语法: ${数组名[元素下标]}
# 例如
echo ${array[0]} # 获取数组里第一个元素
echo ${array[*]} # 获取数组里的所有元素
echo ${#array[*]} # 获取数组里所有元素个数
echo ${!array[@]} # 获取数组元素的索引下标
echo ${array[@]:1:2} # 访问指定的元素;1代表从下标为1的元素开始获取;2代表获取后面几个元素
declare -a # 查看普通数组信息
关联数组
可以使用字符串作为数组索引(元素的下标)
关联数组的定义
基本语法: declare -A 关联数组名
# 例如,定义一个关联数组,名称为asso_arr
declare -A asso_arr
关联数组的赋值
基本语法1: 关联数组名[索引或下标]=变量值
基本语法2: 关联数组名=([name1]=值1 [name2]=值2 …)
# 例如,给关联数组asso_arr赋值
asso_arr[linux]=one
asso_arr[c]=two
asso_arr[shell]=three
asso_arr=([linux]=jeck [c]=mary [shell]="Tian Di")
关联数组的读取
echo ${asso_arr[linux]}
one
echo ${asso_arr[c]}
two
echo ${asso_arr[*]}
three two one
echo ${!asso_arr[*]}
shell c linux
echo ${#asso_arr[*]}
3
# 查看关联数组:
declare -A asso_arr
其它变量
取出一个目录下的目录和文件:dirname命令和 basename命令
$ A=/root/Desktop/shell/mem.txt
$ echo $A
/root/Desktop/shell/mem.txt
$ dirname $A
/root/Desktop/shell
$ basename $A
mem.txt
变量内容的删除和替换
符号 | 说明 |
---|---|
% | 代表从右往左删除 |
%% | 代表从右往左去掉最多 |
# | 代表从左往右去掉删除 |
## | 代表从左往右去掉最多 |
使用示例
$ url=www.taobao.com
$ echo ${#url} 获取变量的长度
$ echo ${url#*.}
$ echo ${url##*.}
$ echo ${url%.*}
$ echo ${url%%.*}
替换:/ 和 //
echo ${url/ao/AO} # 用AO代替ao(从左往右第一个)
echo ${url//ao/AO} # 贪婪替换(替代所有)
替代: - 和 :- +和:+
echo ${abc-123}
abc=hello
echo ${abc-444}
echo $abc
abc=
echo ${abc-222}
${变量名-新的变量值} 或者 ${变量名=新的变量值}
变量没有被赋值:会使用“新的变量值”替代
变量有被赋值(包括空值): 不会被替代
echo ${ABC:-123}
ABC=HELLO
echo ${ABC:-123}
ABC=
echo ${ABC:-123}
${变量名:-新的变量值} 或者 ${变量名:=新的变量值}
变量没有被赋值或者赋空值:会使用“新的变量值”替代
变量有被赋值: 不会被替代
echo ${abc=123}
echo ${abc:=123}
$ unset abc
$ echo ${abc:+123}
$ abc=hello
$ echo ${abc:+123}
123
$ abc=
$ echo ${abc:+123}
${变量名+新的变量值}
变量没有被赋值或者赋空值:不会使用“新的变量值”替代
变量有被赋值: 会被替代
$ unset abc
$ echo ${abc+123}
$ abc=hello
$ echo ${abc+123}
123
$ abc=
$ echo ${abc+123}
123
${变量名:+新的变量值}
变量没有被赋值:不会使用“新的变量值”替代
变量有被赋值(包括空值): 会被替代
$ unset abc
$ echo ${abc?123}
-bash: abc: 123
$ abc=hello
$ echo ${abc?123}
hello
$ abc=
$ echo ${abc?123}
${变量名?新的变量值}
变量没有被赋值:提示错误信息
变量被赋值(包括空值):不会使用“新的变量值”替代
$ unset abc
$ echo ${abc:?123}
-bash: abc: 123
$ abc=hello
$ echo ${abc:?123}
hello
$ abc=
$ echo ${abc:?123}
-bash: abc: 123
${变量名:?新的变量值}
变量没有被赋值或者赋空值时:提示错误信息
变量被赋值:不会使用“新的变量值”替代
说明:?主要是当变量没有赋值提示错误信息的,没有赋值功能
文章来源:https://blog.csdn.net/qq_45157350/article/details/135167646
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!