如何重写以下 bash 命令以符合ShellCheck?
memory=$(cat /proc/meminfo | grep 'MemTotal:' | awk {'print $2}' 2> /dev/null)
它目前抱怨:
- 没用的猫。考虑'cmd <文件| ..' 或 'cmd 文件 | ..'
- 这个 { 是字面的。
如何重写以下 bash 命令以符合ShellCheck?
memory=$(cat /proc/meminfo | grep 'MemTotal:' | awk {'print $2}' 2> /dev/null)
它目前抱怨:
shellcheck 投诉是
cat filename | grep 'pattern'
grep 'pattern' filename
awk '{command}'
因此,满足 shellcheck 的版本看起来像
memory=$(grep 'MemTotal:' /proc/meminfo | awk '{print $2}')
我不确定你为什么重定向标准错误,所以我放弃了它。
但是,将 grep 输出管道传输到 awk 很少是最好的解决方案。awk 几乎可以做任何 grep 可以做的事情,因此您可以进一步简化为
memory=$(awk '/MemTotal:/ { print $2 }' /proc/meminfo)
没有管道!
就像猜测一样,您可能想要:
memory=$(grep 'MemTotal:' /proc/meminfo | awk '{print $2}' 2> /dev/null)
但是,这是对 shellcheck 输出的直接解释,所以我不确定你在问什么。就目前而言,您本质上是在问:“为什么这不起作用?”。