一、shell字符串数组遍历
在shell中,字符串数组可以通过循环遍历来访问其每个元素。以下是遍历字符串数组的示例代码:
#!/bin/bash
# 定义一个字符串数组
arr=("apple" "banana" "orange" "grape" "watermelon")
# 遍历数组
for i in "${arr[@]}"
do
echo "$i"
done
以上代码输出以下结果:
apple
banana
orange
grape
watermelon
在循环中,变量i
会依次取到数组的每一个元素,然后通过echo
命令输出。
二、shell定义字符串数组
在shell中,可以通过一行语句来定义一个字符串数组:
arr=("element1" "element2" "element3" ...)
以上语句定义了一个名为arr
的字符串数组,其中包含了若干个字符串元素。下面是一个定义字符串数组的示例代码:
#!/bin/bash
# 定义一个字符串数组
arr=("apple" "banana" "orange" "grape" "watermelon")
# 打印数组
echo "${arr[@]}"
以上代码输出以下结果:
apple banana orange grape watermelon
在输出数组元素时,需要使用${arr[@]}
的形式。也可以使用${arr[*]}
输出,它们的区别在于数组元素之间的分隔符不同,使用@
会以空格分隔数组元素,而使用*
则会以IFS变量的值分隔。
三、shell字符串数组相加
在shell中,可以通过+=
运算符来实现字符串数组的合并。以下是合并两个数组的代码示例:
#!/bin/bash
# 定义两个字符串数组
arr1=("apple" "banana" "orange")
arr2=("grape" "watermelon")
# 合并两个数组并打印结果
arr3=("${arr1[@]}" "${arr2[@]}")
echo "${arr3[@]}"
以上代码输出以下结果:
apple banana orange grape watermelon
在数组合并时,需要注意使用${arr1[@]}
${arr2[@]}
的形式,以确保将两个数组的元素全部取出。
四、shell字符串数组初始化
在shell中,可以使用declare -a
或local -a
命令来定义一个空的字符串数组,这个数组可以在后面进行初始化。以下是定义并初始化一个字符串数组的代码示例:
#!/bin/bash
# 定义一个空的字符串数组
declare -a arr
# 给数组赋值
arr=("apple" "banana" "orange" "grape" "watermelon")
# 打印数组
echo "${arr[@]}"
以上代码输出以下结果:
apple banana orange grape watermelon
在第二行中,定义了一个名为arr
的空字符串数组;在第四行,对数组进行了初始化;在第六行中,使用${arr[@]}
将数组元素打印出来。
五、shell字符串数组是否在数组中
在shell中,可以使用in_array
函数来判断一个字符串是否在字符串数组中。以下是判断字符串是否在数组中的代码示例:
#!/bin/bash
# 定义一个字符串数组
arr=("apple" "banana" "orange" "grape" "watermelon")
# 判断字符串是否在数组中
if [[ "${arr[*]}" =~ "banana" ]]; then
echo "banana exists in the array"
else
echo "banana does not exist in the array"
fi
以上代码输出以下结果:
banana exists in the array
在第五行中,使用[[ "${arr[*]}" =~ "banana" ]]
判断字符串"banana"是否在数组中。
六、shell 字符串数组
在shell中,可以使用split
命令将一个字符串分割成字符串数组。以下是将一个字符串按照空格分割并存入字符串数组的代码示例:
#!/bin/bash
# 定义一个字符串
str="hello world"
# 将字符串以空格分割成数组
IFS=" " read -r -a arr <<< "$str"
# 打印数组元素
echo "${arr[@]}"
以上代码输出以下结果:
hello world
在第四行中,通过IFS=" "
将变量IFS
定义为空格,然后使用read
命令将字符串按空格分割成字符串数组。
七、shell字符串转数组
shell还提供了$()
的形式来实现字符串转数组。以下是将一个字符串转成数组并打印的代码示例:
#!/bin/bash
# 定义一个字符串
str="apple,banana,orange,grape,watermelon"
# 将字符串转成数组
arr=($(echo "$str" | tr ',' ' '))
# 打印数组
echo "${arr[@]}"
以上代码输出以下结果:
apple banana orange grape watermelon
在第五行中,echo "$str" | tr ',' ' '
将字符串中的逗号替换成空格,同时使用$()
来执行转换后的字符串,将其转成数组。
八、shell字符串长度
在shell中,可以使用${#string}
的形式来获取字符串的长度。以下是获取字符串长度的代码示例:
#!/bin/bash
# 定义一个字符串
str="apple"
# 获取字符串长度
len=${#str}
# 打印长度
echo "the length of the string is $len"
以上代码输出以下结果:
the length of the string is 5
在第五行中,${#str}
获取变量str
的长度,然后将其存入变量len
中。
九、shell字符串转数字
在shell中,可以使用expr
命令将字符串转成数字类型。以下是将一个字符串转成数字并进行加法运算的代码示例:
#!/bin/bash
# 定义两个字符串变量
str1="10"
str2="20"
# 将字符串转成数字并进行加法运算
result=$(expr $str1 + $str2)
# 打印结果
echo $result
以上代码输出以下结果:
30
在第五行中,expr $str1 + $str2
将两个字符串转换成数字并进行加法运算,并将结果存入变量result
中。
十、shell字符串比较相等
在shell中,可以使用[ "$str1" == "$str2" ]
的形式来比较两个字符串是否相等。以下是比较两个字符串是否相等的代码示例:
#!/bin/bash
# 定义两个字符串变量
str1="apple"
str2="banana"
# 比较两个字符串是否相等
if [ "$str1" == "$str2" ]; then
echo "str1 equals to str2"
else
echo "str1 does not equal to str2"
fi
以上代码输出以下结果:
str1 does not equal to str2
在第五行中,使用[ "$str1" == "$str2" ]
来比较两个字符串是否相等。