Linux

在 shell 腳本中使用記錄器

  • April 17, 2015

如何在 shell 腳本中使用記錄器?

如果我跑

ntpd -qnp pool.ntp.org 2> >(logger)

在控制台中,它按預期工作。

如果我把它放到一個 shell 腳本中

#!/bin/sh
ntpd -qnp pool.ntp.org 2> >(logger)

我收到以下錯誤:

line 2: syntax error: unexpected redirection
exited with code 2

shell腳本有什麼問題?

shebang 是正確的,因為 #!/bin/sh 和 #!/bin/bash 都可以使用*,但是,IIRC,您應該使用管道而不是重定向記錄器,因為它是程序而不是文件。

試試這個腳本:


#!/bin/sh
ntpd -qnp pool.ntp.org 2>&1 |logger

*如果您的腳本使用#!/bin/sh,它們應該是posix 兼容的,即在solaris 和AIX 上執行良好。如果您曾經使用過某些 bash 特定功能,則必須使用 #!/bin/bash,因為沒有更多的可移植性。

問題是你在使用 bash-ism 而你的 hash-bang 說/bin/sh. 將其更改為#! /bin/bash,它將起作用。

引用自:https://serverfault.com/questions/563901