我正在尝试grep所有的负载平均值&将它们放在一个数组中。具体的方法应该是什么,记住以下的要求。
定义数组:
LA= ("one" "five" "fifteen")
LA= (`(uptime | grep -o '[0-9]\+\.[0-9]\+*')`)但是uptime | grep -o '[0-9]\+\.[0-9]\+*'命令提供如下输出:
3.08
3.49
3.61要求: 1.不应该有换行符,所以平均值用空格分隔,并符合数组语法。
值只在将小数发送到输出变量或数组变量之前。
发布于 2018-03-10 12:18:06
在填充数组时,行提要不是问题。对bash来说,它们只是上下文中的另一个单词分隔符。
命令LA= ((uptime | grep -o '[0-9]\+\.[0-9]\+*'))有两个错误:
=之后的空间。这是一种有效的语法,但并不如您所期望的那样。它没有将行剩余部分的值分配给$LA,而是将$LA设置为空字符串,然后运行行的其余部分。这对于临时在运行特定命令之前重写导出的环境变量的值是一个有用的特性。一旦命令退出,变量的原始值就会被恢复。例如$ VISUAL=/usr/bin/joe敏感编辑器myfile.txt .$ echo $VISUAL /usr/bin/vi$之前缺少一个(。如果没有$,您的命令不是命令替换,而是带有伪操作数和操作符的shell算法。试一试:
$ LA=($(uptime | grep -Eo '[0-9]+\.[0-9]+'))
$ typeset -p LA
declare -a LA=([0]="0.97" [1]="1.23" [2]="1.39")https://unix.stackexchange.com/questions/429413
复制相似问题