shell脚本:ambiguous redirect

nlines=6
index=0
iplist=
while read line
do
    index=$[ ${index}+1 ]
    iplist[$index]="$line"
done < `sed -n "5,${nlines}p" "cloudfs_deploy.conf"`
echo ${iplist[@]}

运行这段脚本之后,总是在sed那行报ambiguous redirect错误
conf文件存在,有6行,我单独运行
nlines=6 ; sed -n "5,${nlines}p" "cloudfs_deploy.conf"
是没有错误的
求教这是什么原因?

阅读 41.2k
2 个回答
nlines=6
index=0
iplist=
while read line
do
    index=$[ ${index}+1 ]
    iplist[$index]="$line"
done < <(sed -n "5,${nlines}p" "cloudfs_deploy.conf")
echo ${iplist[@]}

应该是这样的吧。具体为啥这样,我也不太清除。

因为第六行你使用了奇怪的语法。显然你想要的是:

bashnlines=6
index=0
iplist=
sed -n "5,${nlines}p" "cloudfs_deploy.conf" | while read line; do
    index=$[ ${index}+1 ]
    iplist[$index]="$line"
done
echo ${iplist[@]}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题