0

現在、bash に次のような case ステートメントがあります。

restart)
    if kill -0 PID; then
        while kill -0 PID; do
            //exit script
        done
        screen -dmS screen1^M
        screen -S screen1 -p 0 -X stuff '//code here'^M
    else
        //other stuff
    fi
    ;;

このスクリプトを使用すると、画面は代わりに開始されるように開始さscreen1screen1?ます。これの原因は何ですか?どうすれば修正できますか?

4

1 に答える 1

2

一部の行の終わりに余分なキャリッジ リターン(おかしなs) があります。^MWindows は行末としてキャリッジ リターンとそれに続くラインフィード (CRLF) を使用しますが、Linux は単純なラインフィードのみを使用するため、無関係なキャリッジ リターンは通常の文字として解釈されることがあります。

これを修正するには、スクリプトからキャリッジ リターンを手動で削除するかdos2unix(1)、行末を変換するなどのプログラムを使用します (他の多くのプログラムでもこれを行うことができます)。

于 2012-07-15T02:00:38.007 に答える