我有一個這樣的腳本:
$foo = $bar if -t;
據我所知,這是在說,
如果此腳本從終端運行,則設定
$foo為$bar.如果此腳本是從 cron 運行的,則評估結果為 false。
我做對了嗎?
uj5u.com熱心網友回復:
在 perldoc perlfunc 中呼叫函式的集合-X,您可以閱讀:
-t Filehandle is opened to a tty.
還
If the argument is omitted, tests $_, except for -t, which tests STDIN.
也就是說你的代碼可以-t STDIN。
uj5u.com熱心網友回復:
-t檔案測驗記錄在perlfunc中,盡管您可以通過查找-X而不是特定檔案測驗來獲得:
% perldoc -f -X
根據您的任務,IO::Interactive可能會更好地完成這項作業,因為在確定某些內容是否真正具有互動性時可能會遇到一些問題。
如果您想知道您在 cron 下運行(并且不是以其他方式非互動式),您可能會考慮在您的 crontab 中設定一個變數(或使用一個已經設定的變數)并簡單地查找它。在您的 crontab 中:
IN_CRON=1
然后,在腳本中:
do_something() if $ENV{IN_CRON};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417083.html
標籤:
下一篇:DBIC虛擬視圖缺失資料
