Arrays 将字符串拆分为数组shell脚本
如何在shell脚本中将字符串拆分为数组 我尝试使用Arrays 将字符串拆分为数组shell脚本,arrays,shell,Arrays,Shell,如何在shell脚本中将字符串拆分为数组 我尝试使用IFS='delimiter',它可以使用循环(for,while),但我需要从该字符串中提取一个数组 如何从字符串生成数组 谢谢 str=a:b:c:d:e set -f IFS=: ary=($str) for key in "${!ary[@]}"; do echo "$key ${ary[$key]}"; done 输出 0 a 1 b 2 c 3 d 4 e 另一种(bash)技术: str=a:b:c:d:e IFS=: re
IFS='delimiter'
,它可以使用循环(for,while)
,但我需要从该字符串中提取一个数组
如何从字符串生成数组
谢谢
str=a:b:c:d:e
set -f
IFS=:
ary=($str)
for key in "${!ary[@]}"; do echo "$key ${ary[$key]}"; done
输出
0 a
1 b
2 c
3 d
4 e
另一种(bash)技术:
str=a:b:c:d:e
IFS=: read -ra ary <<<"$str"
str=a:b:c:d:e
IFS=:read-ra ari找到了一个不需要更改IFS或循环的解决方案:
str=a:b:c:d:e
arr=(`echo $str | cut -d ":" --output-delimiter=" " -f 1-`)
输出:
echo ${arr[@]}
a b c d e
输出:
echo ${arr[@]}
a b c d e
把上面的答案组合成对我有用的东西
set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "$@"; do echo $i; done
给予
它不起作用。错误消息说expected“(在ary=($str)所在的行中)。这是专门的bash语法。您使用的shell是什么?如果您的脚本具有#!/bin/sh
更改为#!/bin/bash
如何调用脚本?我不明白(我是如何运行此脚本的?)@SJunejo,/bin/sh中唯一类似数组的数据结构是位置参数:set--$str;for“$@”中的元素太长了,读不下去了。如果你真的需要一个数组,你需要选择一个不同的工具来做这个工作。使用$tring来测试字符串是一个很好的触碰,但是:方法太复杂了,这又与“G?”GrayBeuld TL不同,它不:-我发现zzk的答案对我来说不太合适,所以通过集对其进行调整--
,然后与给出的多个答案中的有用内容进行核对。这是出于我自己的目的,但如果其他人有相同的问题,我也会进行共享。我需要对路径中列出的所有文件夹运行多个测试—主要用于审核权限提升问题。
set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "$@"; do echo $i; done
# set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "$@"; do echo $i; done
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
#