shell脚本字符串转数组
时间: 2023-07-08 22:48:16 浏览: 147
在Shell脚本中,我们可以使用多种方式将字符串转换为数组。以下是两种常用的方式:
1. 使用IFS分隔符
```shell
str="apple,banana,orange"
IFS=',' read -ra arr <<< "$str"
echo ${arr[0]} # 输出 apple
echo ${arr[1]} # 输出 banana
echo ${arr[2]} # 输出 orange
```
其中,`IFS=','`表示使用逗号作为分隔符,`read`命令将字符串读入并分割为多个变量,`-a`选项将其读入到一个数组中,`<<<`表示将字符串作为输入。
2. 使用tr命令
```shell
str="apple,banana,orange"
arr=($(echo $str | tr ',' ' '))
echo ${arr[0]} # 输出 apple
echo ${arr[1]} # 输出 banana
echo ${arr[2]} # 输出 orange
```
其中,`echo $str | tr ',' ' '`将逗号替换为空格,然后使用`$()`将其作为一个命令执行,并将结果赋值给数组`arr`。`${arr[0]}`表示数组中的第一个元素,以此类推。
需要注意的是,如果字符串中包含空格或特殊字符,需要使用引号将其括起来。
相关问题
shell 字符串转数组
shell 中字符串转数组可以通过以下两种方式实现:
1. 使用 read 命令将字符串转换为数组
例如,将以空格分隔的字符串转换为数组:
```
str="hello world"
read -a arr <<< "$str"
echo ${arr[0]} # 输出 hello
echo ${arr[1]} # 输出 world
```
2. 使用 IFS(Internal Field Separator)变量将字符串转换为数组
IFS 变量用于指定 shell 中的字段分隔符,默认情况下为空格、制表符和换行符。我们可以将 IFS 变量设置为我们想要的分隔符,然后使用 for 循环将字符串分割成数组。
例如,将以逗号分隔的字符串转换为数组:
```
str="apple,banana,orange"
IFS=',' read -ra arr <<< "$str"
echo ${arr[0]} # 输出 apple
echo ${arr[1]} # 输出 banana
echo ${arr[2]} # 输出 orange
```
以上两种方式都可以将字符串转换为数组,具体使用哪种方式取决于具体情况。
shell字符串转数组
shell中可以使用以下命令将字符串转换为数组:
```
str="a b c d e"
arr=($str)
```
这样就将字符串`"a b c d e"`转换为了数组`arr`,数组中的元素分别为`a`、`b`、`c`、`d`、`e`。需要注意的是,数组元素之间的分隔符是空格,如果字符串中包含其他分隔符,需要使用相应的分隔符进行转换。
阅读全文