中的数组语法bash
很简单,使用括号(
和)
:
# string
var=name
# NOT array of 3 elements
# delimiter is space ' ' not ,
arr=(one,two,three)
echo ${#arr[@]}
1
# with space
arr=(one two three)
# or ' ',
arr=(one, two, three)
echo ${#arr[@]}
3
# brace expansion works as well
# 10 elements
arr=({0..9})
echo ${#arr[@]}
10
# advanced one
curly_flags=(--{ftp,ssl,dns,http,email,fc,fmp,fr,fl,dc,domain,help});
echo ${curly_flags[@]}
--ftp --ssl --dns --http --email --fc --fmp --fr --fl --dc --domain --help
echo ${#curly_flags[@]}
12
如果要运行命令并存储输出
# a string of output
arr=$(ls)
echo ${#arr[@]}
1
# wrapping with parentheses
arr=($(ls))
echo ${#arr[@]}
256
一种更高级/更方便的方法是使用内置的bash 命令mapfile
或readarray
进程替换。这是一个使用示例mapfile
:
# read the output of ls, save it in the array name: my_arr
# -t Remove a trailing DELIM from each line read (default newline)
mapfile -t my_arr < <(ls)
echo ${#my_arr[@]}
256