Bash 脚本完成后不退出

Bash script not exiting after completion

首先,免责声明:我对此很陌生。

我正在尝试为作业编写一个简单的 bash 脚本。我需要将日期、手指和正常运行时间的输出打印到标准输出和文件中。从我正在阅读的内容来看,退出失败似乎是因为进程在子 shell 中 运行,但是从阅读来看,我真的不明白该怎么做。我发现通过 tee 使用管道和输入重定向可以得到我想要的结果,但它不会退出。除了管道,尤其是打字:|每行上的 tee Time_Script_Output.txt 似乎效率很低,我正在寻找一种更简洁的方式来编写脚本。

代码:

#! /bin/bash

bash 
/bin/date | tee Time_Script_Output.txt &
/usr/bin/finger | tee Time_Script_Output.txt &
/usr/bin/uptime | tee Time_Script_Output.txt 

exit

谢谢!, 尼克·卡瓦纳

第一行 bash 不正确。假设您正在手动 运行 运行此脚本 (bash script.sh),您将在每次脚本 运行 时进入 new bash 会话秒。查看 echo $SHLVL 的输出以了解你已经走了多远(也是 ps faxww 的输出)。删除该行。

您可能也不想 运行 在后台设置前两个管道,您希望命令 运行 和输出在下一个命令之前写入 运行s,否则您可能会在输出中遇到排序问题。

您也不需要在末尾显式 exit。脚本会在结束时自动退出。

您可以使用 {} 分组来只使用管道一次:

#!/bin/bash

{
/bin/date
/usr/bin/finger
/usr/bin/uptime
} | tee Time_Script_Output.txt