执行原因【菜鸟笔记】Ubuntu系统shellscript中 关于for循环以及declare出错的原因

废话就不多说了,开始。。。

    问题描述:

    for的各种句式语法中,for((i=0;i<10;i++))这一句式,在bash中能够顺遂失掉执行

    如果用sh执行 *.sh,for的这一句式是无法执行的,会报错“Syntax error: Bad for loop variable”。

    后来在网上找原因的时候,发现有网友反应脚本中如果应用declare也会出现类似情况,

    即在sh中执行就报错“delcare: not found”,在bash中就可以畸形执行。

    

    知其所以然:

    每日一道理
书籍好比一架梯子,它能引领人们登上文化的殿堂;书籍如同一把钥匙,它将帮助我们开启心灵的智慧之窗;书籍犹如一条小船,它会载着我们驶向知识的海洋。

    键入which sh,找到Ubuntu的sh位于/bin/sh,然后 ls -l /bin/sh ,发现/bin/sh其实是一个硬链接,指向了dash。

    而dash虽然体积小速度快,兼容性好,但是响应的,在bash中能够顺遂执行的一些货色在dash中就不支持了。

    

    处理方法:

    简单只是训练或偶尔执行脚本的话,应用bash 执行 *.sh就是了;

    如果想彻底处理,就应用度娘给的方法:键入sudo dpkg-reconfigure dash,并选择否。即强制ubuntu不应用dash作为系统默许的shell。

    然后再次ls -l /bin/sh,就会看到“/bin/sh -> bash”了。处理!

文章结束给大家分享下程序员的一些笑话语录: 问:你觉得让你女朋友(或者任何一个女的)从你和李彦宏之间选一个,你觉得她会选谁?  
  答:因为李艳红这种败类,所以我没女友!

--------------------------------- 原创文章 By
执行和原因
---------------------------------

posted @ 2013-05-30 20:47  xinyuyuanm  阅读(231)  评论(0编辑  收藏  举报