shell中的for循环出现语法错误(syntax error: bad for loop variable)
出现这种错误是因为有些linux系统默认会使用ash进行编译shell脚本,我的机器就是这样,但是我写的脚本是应该用bash执行的。虽然我在开头注明了#!/bin/bash,好像它还是默认去找了bash,真是让人无奈。上网搜索了一下,找到两种解决方案:1、修改脚本 2、修改系统默认执行shell的工具
第一种的具体做法就是,原来的for循环类似这种 for(( i=1; i<3; i++)),改成类似这种的:for i in seq 1000
,这是从一个网友的博客上抄来的,我不知道是否等价。但是看着后者满脸黑人问号,毕竟我是写的java多一些,所以根本不知道后者是什么意思。
第二种的具体做法是:执行一条命令
sudo dpkg-reconfigure dash
选yes
执行这条命令后就会出现很吓人的页面,全屏底色变成红色,一个提示框。大意就是我们系统默认选择dash是为了提高系统的性能和启动速度(好像有吧),选择dash作为默认的执行shell工具吗?(坑)我们选择NO选项就可以了。我没有敢选,因为不知道选了之后会有什么幺蛾子。
但是写完了这篇,我就准备去改了,因为我原文里的有好多的for循环,我还不知道怎么把他们改成bash执行的方式。
没事,如果你改了之后还想改回来,直接重新执行上面的命令,选择 YES就好了。easy