美文网首页
Shell使用输出重定向时发现的问题总结

Shell使用输出重定向时发现的问题总结

作者: 努力2009 | 来源:发表于2016-12-22 19:24 被阅读570次

在调用函数时,如果使用tee做输出重定向,会造成在函数内对全局变量的修改,出函数之后失效。

不使用tee做输出重定向的代码:

#!/bin/bash
declare -i NUM=100;
function updateNum(){
  echo "updateNUm: before update 'NUM'=$NUM"
  NUM=300;
  echo "updateNUm: after update 'NUM'=$NUM"
}

echo "调用函数之前,NUM=$NUM";
updateNum 2>&1 >> /home/shangsong/temp/test1.log;
echo "调用函数之后,NUM=$NUM";

执行“bash -x test1.sh”

+ declare -i NUM=100
+ echo 调用函数之前,NUM=100
调用函数之前,NUM=100
+ updateNum
+ echo 'updateNUm: before update '\''NUM'\''=100'
+ NUM=300
+ echo 'updateNUm: after update '\''NUM'\''=300'
+ echo 调用函数之后,NUM=300
调用函数之后,NUM=300

使用tee做输出重定向之后的代码:

#!/bin/bash
declare -i NUM=100;
function updateNum(){
  echo "updateNUm: before update 'NUM'=$NUM"
  NUM=300;
  echo "updateNUm: after update 'NUM'=$NUM"
}

echo "调用函数之前,NUM=$NUM";
updateNum 2>&1 | tee /home/temp/test1.log;
echo "调用函数之后,NUM=$NUM";

执行“bash -x test1.sh”

+ declare -i NUM=100
+ echo 调用函数之前,NUM=100
调用函数之前,NUM=100
+ updateNum
+ tee /home/shangsong/temp/test1.log
+ echo 'updateNUm: before update '\''NUM'\''=100'
updateNUm: before update 'NUM'=100
+ NUM=300
+ echo 'updateNUm: after update '\''NUM'\''=300'
updateNUm: after update 'NUM'=300
+ echo 调用函数之后,NUM=100
调用函数之后,NUM=100

结论

在调用函数时,如果使用tee做输出重定向,会造成在函数内对全局变量的修改,出函数之后失效。

相关文章

  • Shell使用输出重定向时发现的问题总结

    在调用函数时,如果使用tee做输出重定向,会造成在函数内对全局变量的修改,出函数之后失效。 不使用tee做输出重定...

  • Shell 的输入输出重定向

    输出重定向 一般shell命令的输出打印在终端上的,不过也可以保存到文件内。 使用>把输出定向到文件中 再次重定向...

  • 重定向

    输出重定向 输入重定向 错误重定向 管道 shell中特殊符号

  • shell中的重定向

    linux shell下常用输入输出操作符是: 输出重定向 输入重定向

  • vim常用操作与重定向

    shell输入重定向和输出重定向 1.输出重定向 下面以/etc下的passwd为例,演示不同的重定向方式。(前提...

  • 【python基础】5-执行外部命令

    调用Shell命令 使用扩展调用Shell命令 获取命令输出和重定向 这一章节的样例输出可能基于你的用户名、工作目...

  • Android 自动化测试-Monkey Log 分析

    如何生成Monkey Log 使用Linux Shell 输出重定向功能, 可参考菜鸟教程如: Log 关键词 :...

  • Shell语言学习(四)

    内容一:Shell脚本语言-管道 内容二:Shell脚本语言-重定向 重定向目的:就是操作文件输入和输出1、学习-...

  • 重定向

    shell 0 1 2 的含义shell上:0表示标准输入1表示标准输出2表示标准错误输出默认为标准输出重定向,与...

  • sed删除空行

    现象 在使用pexpect的before输出重定向到文件中时,发现文件首多了空行 方案 使用sed命令 参考 se...

网友评论

      本文标题:Shell使用输出重定向时发现的问题总结

      本文链接:https://www.haomeiwen.com/subject/khshvttx.html