いくつかの文字列を配列に格納する

いくつかの文字列を配列に格納する

私はこれを持っています

sCSISmart1 トラップタイプ   
    エンタープライズサイクロン                        
    変数 {cycHostAdapterNumber、cycHostAdapterID、cycManagerID}          
    説明                             
    「SNMP エージェントが起動しています。」                       
    --#TYPE "SNMP エージェントが起動しています。"                    
    --#SUMMARY "SNMP エージェントが起動しています"                    
    --#引数 {}                           
    --#重大度情報                       
    --#タイムインデックス 100                  
    --#状態は動作中                    
    --#ヘルプ "scsismrt.hlp"                          
    --#ヘルプタグ 101                    
::= 101      

私がしたいこと

VARIABLEそれぞれの名前を配列にコピーするコマンドvar

したがって上記の出力

エコー "${var[0]}"
cycホストアダプタ番号

エコー "${var[1]}"
cycホストアダプタID

エコー "${var[2]}"
サイクルマネージャーID

もう一つの例

sCSISmart1 トラップタイプ   
    エンタープライズサイクロン                        
    変数 { scellNameDateTime,                      
                     セルSWコンポーネント、                     
                     セルコード、                  
                     セルCAC、                     
                     セルEIP}                           
    説明                             
    「SNMP エージェントが起動しています。」                       
    --#TYPE "SNMP エージェントが起動しています。"                    
    --#SUMMARY "SNMP エージェントが起動しています"                    
    --#引数 {}                           
    --#重大度情報                       
    --#タイムインデックス 100                  
    --#状態は動作中                    
    --#ヘルプ "scsismrt.hlp"                          
    --#ヘルプタグ 101                    
::= 101      

上記の出力

エコー "${var[0]}"
セル名日付時刻

エコー "${var[1]}"
セルSWコンポーネント

エコー "${var[2]}"
セルコード

エコー "${var[3]}"
セルCAC

エコー "${var[4]}"
セルEIP

もう一つの例

sCSISmart1 トラップタイプ   
    エンタープライズサイクロン                        
    変数 {                    
                     セルEIP
               }                           
    説明                             
    「SNMP エージェントが起動しています。」                       
    --#TYPE "SNMP エージェントが起動しています。"                    
    --#SUMMARY "SNMP エージェントが起動しています"                    
    --#引数 {}                           
    --#重大度情報                       
    --#タイムインデックス 100                  
    --#状態は動作中                    
    --#ヘルプ "scsismrt.hlp"                          
    --#ヘルプタグ 101                    
::= 101      

上記の出力

エコー "${var[0]}"
セルEIP

私が試したこと(これはすべてを保存するだけですprvar

prvar="$(awk '/VARIABLES/,/{gsub("VARIABLES"," "); gsub("}"," "); gsub("{"," ");gsub(","," ");print}' temp1)"

これを実現するにはどうしたらいいでしょうか?

答え1

名前にスペースが含まれていないことが確実な場合は、引用符を削除し、( )コマンド置換を囲んで を使​​用します。

prvar=($(awk ... temp1))

の効果:

$ prvar=( $(awk '/VARIABLES/,/}/ {gsub("VARIABLES"," "); gsub("}"," "); gsub("{"," ");gsub(","," ");print}' temp1) )
$ echo ${prvar[@]} ${#prvar[@]}
cycHostAdapterNumber cycHostAdapterID cycManagerID 3

関連情報