从内部脚本获取命令输出的日志不能按预期工作

时间:2014-03-19 12:27:10

标签: linux bash

首先,尝试使用以下脚本执行命令序列

#! /bin/bash

echo "command1 going to execute"
command1

echo "command2 going to execute"
command2

echo "command3 going to execute"
command3
.......................so on...

并按如下方式记录脚本上方的输出格式

 ./test.sh | tee test_$(date "+%Y-%m-%d_%H:%M:%S").log

所以我可以在终端上看到它,并在.log文件中将其记录下来。它工作正常。

现在我在脚本中进行一些更改,只需执行像./test.sh这样的脚本,脚本在内部执行log.So无需在运行脚本时提供额外的参数。

更改如下

 #! /bin/bash
execute_all_cmd()
{
    echo "command1 going to execute"
    command1

    echo "command2 going to execute"
    command2

    echo "command3 going to execute"
    command3
    .......................so on...
}

now=$(date "+%Y-%m-%d_%H:%M:%S")
LOGFILE="test_$now.log"
touch $LOGFILE
chmod 777 "${LOGFILE}"

execute_all_cmd 2>&1 | tee $LOGFILE

当按./test.sh运行脚本时,没有任何反应,提示在几秒钟后出现,我可以看到文件生成但不是文件中的数据(大小为0K)。

那么这里出了什么问题?

更新:使用set -/+x

执行命令的结果
++ date +%Y-%m-%d_%H:%M:%S
+ now=2014-03-19_22:24:20
+ LOGFILE=test_2014-03-19_22:24:20.log
+ touch test_2014-03-19_22:24:20.log
+ chmod 777 test_2014-03-19_22:24:20.log
+ execute_all_cmd
+ tee test_2014-03-19_22:24:20.log
+ set +x

更新

发现一个有趣的事情,我在原始脚本中的函数execute_all_cmd包含大约900行(这里我只粘贴了几行)。所以我尝试了几行,让我们说200左右,并评论其他行。惊喜它有效!现在联合国评论了更多的线路,并且在同样的问题之后它可以运行多达500行。

所以我的问题

bash函数中的行数是否有限制?

0 个答案:

没有答案