Bash脚本在完成后未退出

Bash脚本在完成后未退出,bash,redirect,output,tee,Bash,Redirect,Output,Tee,首先,免责声明:我对这一点非常陌生 我正在尝试为作业编写一个简单的bash脚本。我需要将日期、手指和正常运行时间的输出打印到标准输出和文件中。从我阅读的内容来看,退出失败似乎是因为进程在子shell中运行,但从阅读的内容来看,我真的不明白如何退出。我发现通过tee使用管道和输入重定向可以得到我想要的结果,但它不会退出。除了管道,尤其是在每一行上键入:| tee Time_Script_Output.txt似乎效率很低,我正在寻找一种更干净的方法来编写脚本 代码: 谢谢!, 尼克·卡瓦纳(Nick

首先,免责声明:我对这一点非常陌生

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

代码:

谢谢!,
尼克·卡瓦纳(Nick Kavanagh)

第一行
bash
不正确。假设您手动运行此脚本(
bash script.sh
),则每次脚本运行时都会进入一个新的bash会话。查看来自
echo$SHLVL
的输出,查看您的深度(以及来自
ps faxww
的输出)。拆下那条线

您可能也不希望在后台运行前两个管道—您希望在下一个命令运行之前运行命令并写入输出—或者您可能会在输出中遇到排序问题

您也不需要在结尾处显式退出。脚本将在自动到达末尾时退出

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

#!/bin/bash

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

为什么要在脚本上运行bash?脚本执行bash并停留在那里,永远不会执行下面的命令。代码:#/bin/bash{/bin/date&/usr/bin/finger&/usr/bin/uptime&}| tee Time|u Script_Output.txt exitWelcome to Stackoverflow+1用于包含一个小的、完整的、自包含的代码示例!这使我们很容易看出问题的症结所在,无论是现在回答这个问题,还是将来的读者与之相关。谢谢你,伊坦,这正是我最后的结论。很高兴知道这是一种被接受的方式。也有点高兴我自己也弄明白了。哈哈,真有趣,我用来自学的课文在第二章末给了我这个作业,然后在第三章解释了大括号展开。这不是大括号展开。这是一个命令列表。大括号扩展是
echo{a,b,c}
#!/bin/bash

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