- 论坛徽章:
- 18
|
本帖最后由 bikkuri 于 2015-12-28 14:01 编辑
谢谢您的帮助!
您的命令正是我想要的。
但是在处理实际脚本的时候发现出错了。
例如将刚才的main.sh换成以下内容。- # main.sh
- #
- #-----------------------DEFINITIONS-----------------------------
- host1=www.baidu.com
- host2=www.sina.com.cn
- host3=www.netease.com
- #-----------------------DEFINITIONS-----------------------------
- base64_decode()
- {
- if [ -f /usr/bin/uudecode ] ; then
- echo "begin-base64 644 b" > $dec64
- awk '{print $0}' >> $dec64
- echo "====" >> $dec64
- uudecode -o $out64 $dec64
- cat $out64
- rm -f $dec64 $out64
- else
- local buff=""
- for buff in $(awk -v B64="$CODE" '{while(length()){split(substr($0,1,4),a,"");$0=substr($0,5);t=0;for(i=3;i>=0;i--){z=1;for(p=0;p<6*i;p++)z=z*2;t=t+z*((a[4-i]=="=")?0:index(B64,a[4-i])-1)}for(i=2;i>=0;i--)if(a[4-i]!="="){y=1;for(p=0;p<8*i;p++)y=y*2;printf("\\x%x",t/y);t%=y}}printf"\n"}');do printf "$buff"; done
- fi
- }
复制代码 然后再执行您的命令就会报错:- [root@nchip:/tmp/test]# awk -vRS='#--*DEFINITIONS--*\n' 'NR==FNR{if(FNR==2)s=$0;next}{printf FNR==2?RT s RT:$0;}' new.def main.sh
- # main.sh
- #
- #-----------------------DEFINITIONS-----------------------------
- host1=www.google.com
- host2=www.yahoo.com.cn
- #-----------------------DEFINITIONS-----------------------------
- awk: cmd. line:1: Invalid format specifier
- [root@nchip:/tmp/test]#
复制代码 如果把那行最长的for开头的行去掉,执行就不会报错。
为什么会有这种情况发生呢?
谢谢!
回复 5# haooooaaa
|
|