4
jenkinsでtclコマンドを実行すると、奇妙な問題が発生します。jclinuxから起動されたTclスクリプトは、コマンドを小文字に変換します。
TCLスクリプトは次の行(同上で大文字のIに注意を払う)があります。jekninsで
foreach name $docker_names {
set name "TestName"
puts $name
set command "docker inspect --format='{{.Id}}' ${name} > /home/temp/id.txt"
send -- "$command\n"
expect "$"
}
を、私は2回目の反復で送られているものため、ジョブが失敗したことがわかりログループのは上記のコマンドですが、小文字です。私は、の大文字であるIが必要です。
これは、ループの2回目に送信されるものです:
docker inspect --format='{{.id}}' testname > /home/temp/id.txt
は注:最初の反復で、すべてが正常に送信されます。
これはなぜ起こっているのですか?
ありがとうございます!
明示的に求められない限り、Tclは文字列の大文字と小文字を変更しません。送信する文字列を取得してから送信する前に明示的にエコーバックされていますか? –
puts "docker inspect --format = '{{Id}}' $ {name}> /home/temp/id.txt"と答えるなら、OKを返します。これは、私がジェンキンズからスクリプトを実行している場合にのみ発生します。 – zephirus
それはあなたが期待していないいくつかのプログラムテキストに変換を適用している何か他にもあるように思えます。悲しいかな、あなたは複雑なソフトウェアスタックを持っていると簡単にやります。一般的には、各言語のスクリプトを独自のファイルに保存するのが最も簡単なので、あなたの日を恐ろしいものにする余分な層はありませんが、それはあなたには役立ちません。 –