如何在shell腳本中將字符串拆分爲數組?將字符串拆分爲數組Shellllscript
我試過IFS='delimiter'
,它與循環(for, while)
一起工作,但我需要該字符串的數組。
如何從字符串中創建數組?
謝謝!
如何在shell腳本中將字符串拆分爲數組?將字符串拆分爲數組Shellllscript
我試過IFS='delimiter'
,它與循環(for, while)
一起工作,但我需要該字符串的數組。
如何從字符串中創建數組?
謝謝!
str=a:b:c:d:e
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"
這僅適用於讀命令的持續時間限制變化的IFS變量。
實測值,不需要改變IFS或迴路中的溶液:
str=a:b:c:d:e
arr=(`echo $str | cut -d ":" --output-delimiter=" " -f 1-`)
輸出:
echo ${arr[@]}
a b c d e
這是行不通的...嘗試做一個回聲$ {arr [1]} – mhstnsc 2016-07-05 15:01:24
#!/bin/bash
str=a:b:c:d:e
arr=(${str//:/ })
OUTPUT:
echo ${arr[@]}
a b c d e
結合的答案上面的東西,工作f或者我
set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "[email protected]"; do echo $i; done
給
# set -- `echo $PATH|cut -d':' --output-delimiter=" " -f 1-`; for i in "[email protected]"; do echo $i; done
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
#
對測試字符串使用$ PATH是一個很好的接觸,但:方式太複雜了,這與[zzk's回答(https://stackoverflow.com/a/13784224/3789665)? – greybeard 2017-07-09 15:20:27
@greybeard tl; dr它沒有:) - 我發現zzk的答案對我來說並不是很有用,所以通過'set --'調整它,然後從給出的多個答案中整理出有用的東西。這是爲了我自己的目的,但也分享回來,如果其他人有同樣的問題 – 2017-07-09 22:03:36
FWIW我需要對路徑中列出的所有文件夾運行多個測試 - 主要是審計特權升級問題。 – 2017-07-09 22:10:07
它不工作。錯誤消息說預計「(」在它是ary的行=($ str)。 – 2012-04-12 19:51:06
這是特別的bash語法。你在用什麼shell?如果腳本有'#!/ bin/sh'變成'#!/bin/bash' – 2012-04-12 20:12:07
我改變了這個,但是錯誤信息沒有消失 – 2012-04-12 20:52:15