崩溃小菜鸟,,求帮看下..
根据工具书写的代码.怎么改都报错....原书代码如下:
代码如下:
#!/bin/bash
shopt -s -o nounset
declare -a KEY
declare -a VALUE
declare -i k=1
while read N V
do
KEY[$k]=$N
VALUE[$k]=$V
((k++))
done<<(awk 'BEGIN{FS=": "}/\w: \w/{print $1,$2}' sapp.conf)
echo "${KEY} = ${VALUE}"
报错如下:
+ shopt -s -o nounset
+ declare -a KEY
+ declare -a VALUE
+ declare -i k=1
conf_load.sh: line 12: syntax error near unexpected token `('
conf_load.sh: line 12: `done<<(awk 'BEGIN{FS=": "}/\w: \w/{print $1,$2}' sapp.conf)'
补上 sapp.conf内容:
Name: Justmake
Version: 5.0
本帖最后由 关阴月飞 于 2014-11-11 15:42 编辑
回复 1# jokimina
代码太挤了,加个空格试试:
done<<(awk 'BEGIN{FS=": "}/\w: \w/{print $1,$2}' sapp.conf)
==>
done<<(awk -F":"'2014' sapp.conf) 回复 3# 关阴月飞
哟. PF胸.. 本帖最后由 jokimina 于 2014-11-11 18:08 编辑
回复 3# 关阴月飞
加空格后依旧报错.........
conf_load.sh: line 11: syntax error near unexpected token `<'
conf_load.sh: line 11: `done< <(awk 'BEGIN{FS=": "}/\w: \w/{print $1,$2}' sapp.conf)'
对着工具书原对应试了很多次..一模一样.......居然不行
另:已经用dos2unix进行过格式转码
昨天试了一下午 怎么改都有报错... 上面贴的是工具书源码..
<<给空格就说语法错误 不给就任何是 here document格式...要求写出对应标示符...
实在是郁闷了..怎么也看不出哪错...还请大神指教 :em16: 回复 5# jokimina
你是怎么运行脚本的?sh xx.sh 么?
请试着这样运行:
bash xx.sh
或者
chmod +x xx.sh
./xx.sh 本帖最后由 jokimina 于 2014-11-12 07:56 编辑
回复 6# 关阴月飞
好了谢谢大神 又上了一课
原来虽然是sh是对bash做的软连接
执行程序时如果判断$0是sh 默认会开启posix标准....方便跨系统执行.
sh == bash --posix
可以这样理解么.....0 0 回复 7# jokimina
就是这个原因导致
页:
[1]