Linux
在 shell 腳本中使用記錄器
如何在 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
,它將起作用。