注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

融智技术学院

融智技术学院163分站,为广大好友提供更多的帮助

 
 
 

日志

 
 

【Liunx每日一问】当我编辑一个脚本文件使,当它运行在Linux中将发生什么呢?  

2014-03-22 15:56:56|  分类: Linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

问题:我写一个Shell脚本文件test.sh并且通过./test.sh运行它在Linux终端。它输出我需要的结果。我想要问当我编辑这个文件并且保存它将发生什么,它仍然运行,并且它将显示我需要的结果。

谢谢。

 

回答:

让我们测试它。

创建一个脚本test.sh

  • #!/usr/bin/env bash
  •  
  • sleep 1
  • echo 'echo "executed overwritten"' >> "$0"   # overwrite self
  • sleep 1
  • echo 'executed original'

并且执行它:

  • $ bash --version
  • GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)
  • Copyright (C) 2011 Free Software Foundation, Inc.
  • License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  •  
  • This is free software; you are free to change and redistribute it.
  • There is NO WARRANTY, to the extent permitted by law.
  • $ chmod +x test.sh
  • $ ./test.sh
  • executed original
  • executed overwritten
  • $

注意bash继续读取修改的文件。当文件改变时,它维持当前的位置在文件中(in bytes)。

作为一个证明,这个脚本

  • #!/usr/bin/env bash
  •  
  • sleep 1
  • dd if=/dev/urandom bs=1024 count=1 of="$0" &>/dev/null   # overwrite self
  • sleep 1
  • echo 'executed original'

给出了如下输出:

  • $ ./test.sh
  • ./test.sh: line 6: syntax error near unexpected token `$'\311\262\203''
  • ./test.sh: line 6: `??z?eп9)?v???y?a??44'{?d??4\:?A????????&?$?????l?
  • @(???4??O?I?n>??7??P?M?a??X.?S?a???V?m?~O<??{}??????J??$??TOtRd??Nw?&??B?

注意它尝试执行随机的乱码。(这是Ubuntu12.04.用法可能随着其它shells变化。)

温馨提示:您的支持与理解,是我们工作最大的动力。如果您是从网上购买的图书,请在对应的网店,给予本书一个好评,我们将衷心感谢!!!
以下是《ARM嵌入式Linux系统开发详解(2)对应的购书评论地址:
当当网:http://product.dangdang.com/23412694.html
亚马逊:http://www.amazon.cn/dp/B00HZA1J8A
京东网:http://item.jd.com/11397777.html

  评论这张
 
阅读(7)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017