首页 文章

Bash脚本在完成后不会退出

提问于
浏览
1

首先,免责声明:我对此很新 .

我正在尝试为作业编写一个简单的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

谢谢!,尼克卡瓦纳

1 回答

  • 2

    第一条 bash 行不正确 . 假设您手动运行此脚本( bash script.sh ),则每次运行脚本时都会进入新的bash会话 . 查看 echo $SHLVL 的输出,看看你走了多远(也是 ps faxww 的输出) . 删除该行 .

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

    您最后也不需要显式 exit . 脚本将在自动结束时退出 .

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

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

相关问题