1

そのため、現在、コマンドの配列をコンソールに送信する必要がある、expect を使用する bash スクリプトがあります。以下に示すように、IFS を使用してこれらを改行で分割し、expect スクリプトを使用してそれらを変数 cmds_eval に入れます。私の希望は、以下に示すように $cmds_eval を使用して、コマンドの束を一度に期待スクリプトに送信することでした。これはうまくいきません。$cmds_eval は、私が考えていたように解釈されていないようです。これを行う適切な方法は何ですか?いずれにせよ、expect スクリプト内で foreach を実行する必要があるとは思いませんが、もしあれば...以下のスクリプトはもちろん簡略化されています...

  cmds_eval=""                                                                  

  OLDIFS=$IFS                                                                   
  IFS="\n" read -ra CMDS <<< "$cmds"                                            
  for c in "${CMDS[@]}"; do                                                     
    cmds_eval+="send -- \"$c\\r\"\r\n"                                          
    cmds_eval+="expect \"*myprompt*\"\n"                                   
  done                                                                          
  IFS=$OLDIFS                                                                   

  expect <<- DONE                                                               
    spawn my ssh session                                                     
    expect "*foobar:*"                                                        
    send -- "foobar\r"                                                          
    expect "*foobar:*"                                                        

    $cmds_eval                                                                  

    send -- "foobar\r" 
DONE

cmds は次のようになります。

cmds="pwd
mv myfile ..
ls"
4

1 に答える 1