在脚本中,我发现了一种处理systemctl status
输出的奇怪方法:
echo "$(systemctl status the_unit_name)" | grep -q 'Active: active'
而不是显而易见的:
systemctl status the_unit_name | grep -q 'Active: active'
我找不到使用这种方法的任何有效理由。我失踪有什么原因吗?
在脚本中,我发现了一种处理systemctl status
输出的奇怪方法:
echo "$(systemctl status the_unit_name)" | grep -q 'Active: active'
而不是显而易见的:
systemctl status the_unit_name | grep -q 'Active: active'
我找不到使用这种方法的任何有效理由。我失踪有什么原因吗?
我有用于处理数据的 Bash 脚本,这些数据是通过管道从另一个进程发送的。
我正在尝试添加一个在满足特定条件后导致和退出的功能,其简化表示为:
( while true; do date; sleep 1; done ) | ( for ((i = 0; i < 3; i++)); do read -r line; echo LINE: $line; sleep 1; done; exit 1 )
在实际情况下:
我也尝试关闭标准输入:
( while true; do date; sleep 1; done ) | ( for ((i = 0; i < 3; i++)); do read -r line; echo LINE: $line; sleep 1; done; exec 0<&- )
但是,当条件满足时,什么都不会发送到 stdout,但左边的程序仍然运行。
我怎样才能完成任务?