如何將以下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