如何将以下bash命令重写为ShellCheck兼容?将bash命令重写为ShellCheck兼容
memory=$(cat /proc/meminfo | grep 'MemTotal:' | awk {'print $2}' 2> /dev/null)
这是目前抱怨:
- 没用的猫。考虑'cmd <文件| ..'或'cmd文件| ..'
- 这是{是文字。
如何将以下bash命令重写为ShellCheck兼容?将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输出的直接解释,所以我不确定你是问什么。就目前而言,你实质上是在问:“为什么这不起作用?”。
完美。谢谢。 – Justin
我认为你的意思是'无用',而不是'除非'(考虑将来切断并粘贴错误)。我已经编辑它以适应。您是否考虑过使用该工具建议的更改? – Arafangion