在 'bash' 中以数组形式访问 'cat' 输出
Access 'cat' output as an array in 'bash'
我正在尝试访问数组中常规 'cat' 输出的一些数值。
如果我这样做:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
我得到:51000 102000 204000 312000 ...
所以我编写了如下脚本来获取数组中的所有元素,并尝试获取元素的数量。
vAvailableFrequencies=$(sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies)
nAvailableFrequencies=${#vAvailableFrequencies[@]}
问题是nAvailableFrequencies
等于数组的字符个数,而不是元素的个数。
我们的想法是能够访问每个元素:
for (( i=0;i<$nAvailableFrequencies;i++)); do
element=${vAvailableFrequencies[$i]
done
这在 bash 中是否可行,而无需执行顺序读取之类的操作并在数组中逐个插入元素?
您只需要在 vAvailableFrequencies
作业周围加上另一组括号:
vAvailableFrequencies=($(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies))
nAvailableFrequencies=${#vAvailableFrequencies[@]}
现在您可以在 for 循环内访问,或单独使用 ${vAvailableFrequencies[i]}
,其中 i
是元素的编号
你可以像这样使用数组:
arr=($(</sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies))
nAvailableFrequencies=${#arrr}
$(<file)
读取并输出一个文件内容,而 (...)
创建一个数组。
如果您使用的是 bash
4 或更高版本,请使用
readfile -t vAvailableFrequencies < /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
(或者,如果您需要使用 sudo
,
readfile -t vAvailableFrequencies < <(sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies)
)
我正在尝试访问数组中常规 'cat' 输出的一些数值。
如果我这样做:cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
我得到:51000 102000 204000 312000 ...
所以我编写了如下脚本来获取数组中的所有元素,并尝试获取元素的数量。
vAvailableFrequencies=$(sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies)
nAvailableFrequencies=${#vAvailableFrequencies[@]}
问题是nAvailableFrequencies
等于数组的字符个数,而不是元素的个数。
我们的想法是能够访问每个元素:
for (( i=0;i<$nAvailableFrequencies;i++)); do
element=${vAvailableFrequencies[$i]
done
这在 bash 中是否可行,而无需执行顺序读取之类的操作并在数组中逐个插入元素?
您只需要在 vAvailableFrequencies
作业周围加上另一组括号:
vAvailableFrequencies=($(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies))
nAvailableFrequencies=${#vAvailableFrequencies[@]}
现在您可以在 for 循环内访问,或单独使用 ${vAvailableFrequencies[i]}
,其中 i
是元素的编号
你可以像这样使用数组:
arr=($(</sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies))
nAvailableFrequencies=${#arrr}
$(<file)
读取并输出一个文件内容,而(...)
创建一个数组。
如果您使用的是 bash
4 或更高版本,请使用
readfile -t vAvailableFrequencies < /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
(或者,如果您需要使用 sudo
,
readfile -t vAvailableFrequencies < <(sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies)
)