2017-08-16 104 views
1

如何將以下bash命令重寫爲ShellCheck兼容?將bash命令重寫爲ShellCheck兼容

memory=$(cat /proc/meminfo | grep 'MemTotal:' | awk {'print $2}' 2> /dev/null) 

這是目前抱怨:

  • 沒用的貓。考慮'cmd <文件| ..'或'cmd文件| ..'
  • 這是{是文字。
+0

我認爲你的意思是'無用',而不是'除非'(考慮將來切斷並粘貼錯誤)。我已經編輯它以適應。您是否考慮過使用該工具建議的更改? – Arafangion

回答

5

的shellcheck投訴

  • 使用cat filename | grep 'pattern'代替grep 'pattern' filename
  • 在AWK命令中的第一支撐是在單引號的外側,因此,文字;它應該是awk '{command}'

所以,這將滿足shellcheck會是什麼樣子

memory=$(grep 'MemTotal:' /proc/meminfo | awk '{print $2}') 

我不知道爲什麼你重定向標準錯誤的版本,所以我放棄了它。

但是,grep輸出到awk很少是最好的解決方案; awk幾乎可以做任何grep可以做的事情,所以你可以進一步簡化爲

memory=$(awk '/MemTotal:/ { print $2 }' /proc/meminfo) 

沒有管道!

2

就像一個猜測,你可能想:

memory=$(grep 'MemTotal:' /proc/meminfo | awk '{print $2}' 2> /dev/null) 

然而,這就是shellcheck輸出的直接解釋,所以我不確定你是問什麼。就目前而言,你實質上是在問:「爲什麼這不起作用?」。

+0

完美。謝謝。 – Justin