jokimina 发表于 2014-11-10 17:14

崩溃小菜鸟,,求帮看下..

根据工具书写的代码.怎么改都报错....         
原书代码如下:
      

代码如下:
#!/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)'


jokimina 发表于 2014-11-10 17:16

补上 sapp.conf内容:
Name: Justmake
Version: 5.0

关阴月飞 发表于 2014-11-11 15:41

本帖最后由 关阴月飞 于 2014-11-11 15:42 编辑

回复 1# jokimina

代码太挤了,加个空格试试:
    done<<(awk 'BEGIN{FS=": "}/\w: \w/{print $1,$2}' sapp.conf)
==>
   done<<(awk -F":"'2014' sapp.conf)

reyleon 发表于 2014-11-11 17:19

回复 3# 关阴月飞


    哟. PF胸..

jokimina 发表于 2014-11-11 18:00

本帖最后由 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:

关阴月飞 发表于 2014-11-11 20:15

回复 5# jokimina


你是怎么运行脚本的?sh xx.sh 么?
请试着这样运行:
   bash xx.sh
或者
   chmod +x xx.sh
   ./xx.sh

jokimina 发表于 2014-11-12 07:43

本帖最后由 jokimina 于 2014-11-12 07:56 编辑

回复 6# 关阴月飞


   好了谢谢大神   又上了一课
         
         原来虽然是sh是对bash做的软连接   
         
            执行程序时如果判断$0是sh 默认会开启posix标准....方便跨系统执行.      
         
                  sh    ==   bash --posix
            
            可以这样理解么.....0 0

关阴月飞 发表于 2014-11-12 11:10

回复 7# jokimina


    就是这个原因导致
页: [1]
查看完整版本: 崩溃小菜鸟,,求帮看下..