Bash
Bash:位置參數的切片
我怎樣才能
$@
在 Bash 中獲得一個切片,而無需首先將所有位置參數複製到另一個這樣的數組?argv=( "$@" ) echo "${argv[@]:2}";
您可以使用與任何其他數組相同的格式。要從中提取第二個和第三個元素
$@
,您可以:echo "${@:1:2}" - - | |----> slice length |------> slice starting index
bash 中的更多數組切片範例
代替
some_array_variable
在您的程式碼中使用(argv
在您的情況下),只需@
在該變數名的位置使用。該符號@
表示輸入參數數組,您可以像對待任何其他數組一樣對待它。混淆只是因為我們習慣於看到它幾乎總是與這樣的$
字元配對:$@
,所以我們沒有意識到@
字元是數組本身,也可以單獨用作數組變數。所以,這裡有一些例子:
從輸入參數數組 切片,
@
通常可以簡單地查看和訪問$@
:# array slicing basic format 1: grab a certain length starting at a certain # index echo "${@:2:5}" # │ │ # │ └────> slice length # └──────> slice starting index # array slicing basic format 2: grab all remaining array elements starting at a # certain index through to the end echo "${@:2}" # │ # │ # └──────> slice starting index
更多數組提醒自己:
以下是對我自己的一般數組提醒,可能也有利於其他登陸此頁面的人。
# store a slice from an array into a new array new_array=("${@:4}") # print the entire array echo "new_array = ${new_array[@]}"
這是 bash 中通用數組切片和數組元素訪問的可執行範例,受此來源的啟發:
(根據您的案例,
@
如果需要,可以用作輸入參數數組,而不是下面)a
a=(one two three four five six) # define a new array, `a`, with 6 elements echo "$a" # print first element of array a echo "${a}" # print first element of array a echo "${a[0]}" # print first element of array a echo "${a[1]}" # print *second* element of array a echo "${#a[@]}" # print number of elements in array a echo "${a[@]:1:3}" # print 2nd through 4th elements; ie: the 3 elements # starting at index 1, inclusive, so: indices 1, 2, and 3 # (output: `two three four`) echo "${a[@]:1}" # print 2nd element onward
全部執行
將上面的所有程式碼塊複製並粘貼到一個名為 的文件
array_slicing_demo.sh
中,並將其標記為執行檔,chmod +x array_slicing_demo.sh
以便您可以執行它。或者,只需在此處從我的eRCaGuy_hello_worl d儲存庫下載我的展示array_slicing_demo.sh文件。然後,像這樣執行它:
./array_slicing_demo.sh a b c d e f g h i j k
…您將看到以下輸出:
b c d e f b c d e f g h i j k new_array = d e f g h i j k one one one two 6 two three four two three four five six
參考
關鍵字:bash 中的數組訪問;bash 數組索引;在 bash 中訪問數組中的元素;bash 數組切片;在 bash 中列印數組;在 bash 中列印數組元素