4

我正在使用“The Advanced Bash Scripting Guide”创建我的第一个脚本。

其中一个练习要求一个脚本,一旦运行,就会将输出保存到日志文件中。

我已经设法创建了我的第一个基本脚本,但在最后一部分遇到了麻烦。该脚本必须包含创建日志文件的代码,但我只能在 shell 中单独执行。

该文件名为 myFirstShellScript.txt。当我运行 ./myFirstShellScript.txt 时,脚本运行。如果我键入脚本运行后./myFirstShellScript.txt > myFirstShellScriptLog,新文件将使用输出创建。现在,我尝试在脚本中添加这一行,但输出的文件是空白的。

这是我的第一个脚本,请不要笑。

#! /bin/bash    
    # show todays date and time
    echo "Todays date is $(date +%j)."

    # Show who is currently logged into the system
    echo $(who)

    # show system uptime
    echo $(uptime)

    # log output in separate file using redirect

exit

我必须做什么(尽可能简单的英语)让脚本自己创建输出文件,而不是在运行后在 shell 中单独执行?

4

2 回答 2

5

通常足以将零件包围起来( ),例如:

#!/bin/bash
(
    # show todays date and time
    echo "Todays date is $(date +%j)."

    # Show who is currently logged into the system
    echo $(who)

    # show system uptime
    echo $(uptime)
) > myFirstShellScriptLog
于 2013-05-31T19:07:10.627 回答
4

您可以使用exec内置命令将脚本的输出重定向到脚本内的文件中:

#! /bin/bash

# Save output to "log.txt"
exec > log.txt

# show todays date and time
echo "Todays date is $(date +%j)."
...
于 2013-05-31T19:07:19.283 回答