Shell Script - String List - Array

原始討論

原始討論「回覆: shell中 `` 與()問題請教」。

回覆內容

接下來回到你原本想要問的「Array」

範例一

#!/usr/bin/env bash

LIST=('Jan' 'Feb' 'Mar' 'Apr' 'Jun' 'Jul' 'Aug')

echo ${LIST[*]}

顯示

Jan Feb Mar Apr Jun Jul Aug

${LIST[*]}」這個語法,就是列出陣列所有元素,不過echo出來會是只有一行。

範例二

#!/usr/bin/env bash

LIST=('Jan' 'Feb' 'Mar' 'Apr' 'Jun' 'Jul' 'Aug')

printf "%s\n" ${LIST[*]}

顯示

Jan
Feb
Mar
Apr
Jun
Jul
Aug

透過「printf」轉成多行。

範例三

#!/usr/bin/env bash

LIST=('Jan' 'Feb' 'Mar' 'Apr' 'Jun' 'Jul' 'Aug')

printf "%s\n" ${LIST[*]} | sort

顯示

Apr
Aug
Feb
Jan
Jul
Jun
Mar

一樣透過「printf」轉成多行,然後再丟給「sort」處理排序。

範例四

#!/usr/bin/env bash

LIST=('Jan' 'Feb' 'Mar' 'Apr' 'Jun' 'Jul' 'Aug')

echo ${LIST[0]}
echo ${LIST[1]}
echo ${LIST[2]}
echo ${LIST[3]}

存取每個元素的語法。

以上回覆,應該可以建立一些基本的概念,幫助你了解一些疑惑, 下面一個回覆,再來針對你的問題個別做解答。

更多請參考「Bash Handbook / Arrays」。

或是「$ man bash

查尋「Arrays」,可以找到下面一段


Arrays
	 Bash provides one-dimensional indexed and associative array  variables.
	 Any  variable may be used as an indexed array; the declare builtin will
	 explicitly declare an array.

	 ...以下省略,請使用 man bash,或點上面的連結,來看更多的內容...

也可以查詢「printf」,可以看到下面一段

printf [-v var] format [arguments]
	   Write  the  formatted arguments to the standard output under the
	   control of the format.  The -v option causes the  output  to  be
	   assigned  to  the  variable var rather than being printed to the
	   standard output.

	 ...以下省略,請使用 man bash,或點上面的連結,來看更多的內容...

接下來…