我想把每個sysctl -a輸出行放入一個陣列:
TAB=($(sysctl -a) )
它不起作用;產生的陣列包含了在任何空白處分割的輸出,而不是只在新行上分割:
[...] 。
NONE
net.netfilter.nf_log.5
=
無
net.netfilter.nf_log.6
=
無
net.netfilter.nf_log.7
=
無
net.netfilter.nf_log.8
[..]
我嘗試:
while read -r line
do
TAB =("${line}"/span>)
done< < (sysctl -a)
這也不行(同樣的問題)。
我嘗試:
while IFS=$'
' read -r line
do
TAB =("${line}"/span>)
done< < (sysctl -a)
但仍然是同樣的輸出,同樣的問題。
什么是正確的方法,讓每一行都正確地放在陣列中?
uj5u.com熱心網友回復:
一種方法--可能是最簡單的--是使用readarray(需要bash 4)。
readarray -t TAB < < (sysctl -a)
測驗:
$ echo ${TAB[0]}
abi.vsyscall32 = 1
$ echo ${TAB[1]} abi.vsyscall32 = 1
crypto.fips_enabled = 0
uj5u.com熱心網友回復:
你很接近:
IFS=$'
' TAB=($(sysctl -a))
# 使用例子:
for x in "{span class="hljs-variable">${TAB[@]}"
do
echo $x
done
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/306920.html
標籤:
上一篇:獲得2張地圖之間的差異的飄逸
下一篇:JS:比較和驗證兩個陣列
