首先,免责声明:我对此很新。
我正在尝试为作业编写一个简单的bash脚本。我需要将日期,手指和正常运行时间的输出打印到stdout和文件。从我正在阅读的内容来看,退出失败似乎是因为进程在子shell中运行,但从阅读开始,我真的不明白如何去做。我发现使用管道和通过T恤输入重定向给了我想要的结果,但它不会退出。除了管道,特别是打字:|每行上的T恤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
谢谢! 尼克卡瓦纳
答案 0 :(得分:2)
第一条bash
行不正确。假设您手动运行此脚本(bash script.sh
),则每次脚本运行时都会进入 new bash会话。查看echo $SHLVL
的输出,了解您已经走了多远(也是ps faxww
的输出)。删除该行。
您可能也不希望在后台运行前两个管道,您希望命令运行并在下一个命令运行之前写入输出,否则您可能会在输出中遇到排序问题。 / p>
最后,您也不需要明确的exit
。该脚本会在自动结束时退出。
您可以使用{}
分组仅使用一次管道:
#!/bin/bash
{
/bin/date
/usr/bin/finger
/usr/bin/uptime
} | tee Time_Script_Output.txt