首先,尝试使用以下脚本执行命令序列
#! /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函数中的行数是否有限制?