废话就不多说了,开始。。。
问题描述:
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
执行和原因
---------------------------------