shell:脚本数组list定义、长度获取、循环打印、数组切片、字符串转换

简介: shell:脚本数组list定义、长度获取、循环打印、数组切片、字符串转换

示例

# 定义数组,等号两边不要有空格
list=(
    "A"
    "B"
)
# 数组长度
echo ${#list[@]} # 2
# 获取数组元素
echo ${list[1]} # B
# 输出所有值
echo ${list[@]} # A B
# 循环打印数组
for var in ${list[@]}; do
    echo "var = ${var}"
done
# 输出:
# var = A
# var = B

字符串转数组

方式一

# 字符串转数组
str="A B C"
arr=($str) 
# 数组长度
echo ${#arr[@]} # 3
# 所有数组元素
echo ${arr[@]}
# A B C

方式二

# 字符串转数组
str="A,B,C"
arr=(`echo $str | tr ',' ' '`) 
# 数组长度
echo ${#arr[@]} # 3
# 所有数组元素
echo ${arr[@]}
# A B C

列表切片

arr=(1 2 3 4 5)
# 输出整个数组
echo ${arr[@]}       
# 1 2 3 4 5
# 获取${ 数组名[@或*] :起始位置:长度}的值
echo ${arr[@]:0:2}   
# 1 2
echo ${arr[*]:1:3}
# 2 3 4
echo ${arr[@]:1}
# 2 3 4 5

示例

字符串解析

# demo.sh
arg=$1
# 拆分字符串参数为数组 
# python@3.7.0 => ('python' '3.7.0')
arr=(`echo $arg | tr '@' ' '`)
# 如果数组长度为2,则取第二个参数为版本号
if [ ${#arr[@]} -eq 2 ]; then
    name=${arr[0]}
    version=${arr[1]}
else
    name=$arg
    version=''
fi
echo $name
echo $version

运行示例

$ bash demo.sh python
python
$ bash demo.sh python@3.7.0
python
3.7.0

参考

Shell脚本list史上最全教程

shell-------数组遍历、切片、替换等操作


相关文章
|
7月前
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList<>()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
363 1
Java 中数组Array和列表List的转换
如何实现数组和 List 之间的转换?
如何实现数组和 List 之间的转换?
139 0
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
1631 7
【Azure Power BI】Power BI获取SharePoint List列表后,如何展开List/Table中的字段,以及使用逗号拼接为一个字符串
【Azure Power BI】Power BI获取SharePoint List列表后,如何展开List/Table中的字段,以及使用逗号拼接为一个字符串
153 0
Power BI获取SharePoint List列表后,如何展开List/Table中的字段,以及使用逗号拼接为一个字符串
在Power BI中,从SharePoint List获取数据时遇到Table和List混合的数据源,直接展开会导致“笛卡尔积”效应,生成过多行。目标是保持行数不变,将Table中的字段与List值用逗号分隔显示在同一行。解决方法包括:1) 添加新列,从Table中提取List的Column2值;2) 使用Text.Combine函数合并List中的值。具体操作步骤包括选择列并自定义新列,然后展开List并以逗号分隔。通过这些步骤,可以将Table转换为所需的字符串格式。完整的Power BI Query代码展示了这一过程。参考链接提供了更多详情。
368 2
|
存储 NoSQL 安全
Redis第六弹-List列表-(相当于数组/顺序表)Lpush key element-一次可以插入多个元素(假如key已经存在,并且key对应的value并非是list,则会报错)
Redis第六弹-List列表-(相当于数组/顺序表)Lpush key element-一次可以插入多个元素(假如key已经存在,并且key对应的value并非是list,则会报错)
|
存储 语音技术 Python
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
语音识别,函数综合案例,黑马ATM,/t/t一个对不齐,用两个/t,数据容器入门,数据容器可以分为列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
|
存储 Dart
Dart中的集合类型:List(数组/列表)
Dart中的集合类型:List(数组/列表)
373 0
字符串和list互转
字符串和list互转
218 0
|
JSON Java 数据格式
将JSON格式的字符串转换成List集合引入gson 的jar包
将JSON格式的字符串转换成List集合引入gson 的jar包
110 0