- 論壇徽章:
- 18
|
本帖最后由 bikkuri 于 2015-12-28 14:01 編輯
謝謝您的幫助!
您的命令正是我想要的。
但是在處理實際腳本的時候發(fā)現(xiàn)出錯了。
例如將剛才的main.sh換成以下內(nèi)容。- # 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
- }
復(fù)制代碼 然后再執(zhí)行您的命令就會報錯:- [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]#
復(fù)制代碼 如果把那行最長的for開頭的行去掉,執(zhí)行就不會報錯。
為什么會有這種情況發(fā)生呢?
謝謝!
回復(fù) 5# haooooaaa
|
|