Command-Line
無法使用非整數時間選項呼叫 watch 命令
我想
w
定期啟動命令,根據man watch
最小可能的時間間隔是0.1。我試過:
watch -n1 w (works) watch -n1.5 w (does not work) watch -n0.1 w (does not work)
當我嘗試
watch
使用 n 選項作為非整數啟動命令時,我收到錯誤消息:watch: failed to parse argument: '0.1'
這是一個語言環境問題。
watch
使用strtod(3)
(取決於語言環境)將參數轉換-n
為 adouble
。要解決此問題,您需要使用
-n
不同的分隔符指定參數:watch -n 0,1 w
或者將您的語言環境更改為使用句點字元作為小數點的設置:
export LC_NUMERIC=en_US.UTF-8 watch -n 0.1 w
幾個參考:
- Linux 手冊頁的相關部分
strtod
:十進制數由可能包含基數字元的非空十進制數字序列組成(小數點,取決於語言環境,通常為“.”)
locale
您可以通過在終端中執行來查看目前設置:locale LANG=en_US.UTF-8 LC_CTYPE="en_US.UTF-8" LC_NUMERIC="en_US.UTF-8" LC_TIME="en_US.UTF-8" LC_COLLATE="en_US.UTF-8" LC_MONETARY="en_US.UTF-8" ...
- 有問題的原始碼可以在 gitlab 上查看:
https://gitlab.com/procps-ng/procps/blob/85fff468fa263cdd2ff1c0144579527c32333695/watch.c#L625
https://gitlab.com/procps-ng/procps/blob/85fff468fa263cdd2ff1c0144579527c32333695/lib/strutils.c#L49
(編輯 2017-09-07):更新了 gitlab 連結