有没有办法检测我是否在控制台中手动运行 shell 脚本或者 cron 是否启动脚本(例如使用 crontab)?
编辑:使用示例:手动我想显示一个进度条,例如哪个 cron 不应该显示。
答案1
听起来您实际上想检测终端 (TTY) 是否可供应用程序使用。 (这将允许您在终端上运行时显示进度条,但如果在 . 下运行则不会打扰crontab
。)
#!/bin/bash
#
[[ -t 2 ]] && echo "This is a status update for the terminal" >&2
echo "This is a normal line of results"
该test -t
操作检查编号的文件描述符是否连接到终端。 0 是标准输入, 1 是标准输出,2 是标准错误。
一般来说,进度信息会写入标准错误将实际结果写入标准输出。这样,如果用户不想看到进度/状态输出,则可以丢弃它,并且可以有效地将状态更新和结果分开:
yourprogram arg1 arg2 ... > results.txt