0

3.2.0-49-generic カーネルを搭載した Ubuntu 12.04 を使用しています。

3 日前まで、私は Bash Scripting で問題なく動作していました。昨日、apt-get更新とアップグレードを行いましたが、それ以来、bash スクリプトで問題が発生しています。新しいバグが導入されたかどうか誰か知っていますか? または、呼び出そうとするコマンドに変更があった場合は?

for line in `cat file.txt`;do echo " $line,";done

コンマは、私が期待するように、最後ではなく最初の最後に表示されます。新しいバージョンの bash に問題があるかどうかはわかりませんが、問題があると思います。

の前にスペースを入れないと$line、bash は行の最初の文字を削除します。

私が言ったように、これはすべて3日前に機能していました。

4

2 に答える 2

2

file.txtは DOS の行末が含まれているようです。これにより、値を出力した後$line、カンマを出力する前に、カーソルが行の先頭に移動します。を使用してそれらを削除しますdos2unix。また、空白を含む行では現在の方法が失敗するため、readコマンドとループを使用してファイルを反復処理する必要があります。while

while read -r line; do
    echo " $line,"
done < file.txt

これは、使用している のバージョンとは何の関係もないことに注意してくださいbash

于 2013-08-06T19:15:38.700 に答える