一、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" ]`来比较两个字符串是否相等。