シェルスクリプトでの奇妙な「エコー」動作

GabryRome

配列の分割から取得したコンテンツを次のように出力したいと思います。

string="abc test;ABCtest.it"

IFS=';' read -a array <<< "$string"
name="${array[0]}"
url="${array[1]}"

echo -ne "\n$url,$name" >> "$outputDir/$fileName"

ただし、出力ファイルにはURL部分が含まれていません。

問題はだと思いますが、.どうすればいいのかわかりません。

これを試してみると

echo $url

できます!

printfハードコードされたファイル名でも試してみましたが、何もありません!

printf '%s %s\n' "$url" "$name"  >> test.txt

変数の後に別のものを連結しようとする$urlと、変数の一部が削除されるか、出力ファイルに上書きされるようです。

たとえば、これを試してみると:

printf '%s %s\n' "$url" "pp"  >> test.txt

私が簡単に得るものcat test.txtはこれです:

 pptest.it

ただし、変数の内容はである$url必要がありますABCTest.it

mklement0

chepnerの役立つ答えを補完するために

  • 場合は、出力はありません見て、あなたはそれが見えるように期待するもの、それはいつもだ価値が検討を探すために、その内容を隠された制御文字データの外観変更される可能性があり、出力上に

  • \r、CR(キャリッジリターン; ASCII値13)は、次の2つの理由で悪名高い例です。

    • (@chepnerが述べているように)カーソルを文字列の途中の行の先頭に移動し、その前にあるものの少なくとも一部を効果的に消去します。例えば:
      • echo $'abcd\refg'prints efgd:これ\rにより、行の先頭から印刷が再開されますたまたま1文字あったため存続する前d文字列からの文字列のみが表示されます後に続く文字列よりも長い(注:構文は、いわゆるANSI C引用符で囲まれた文字列であり、inなどのエスケープシーケンスを使用して実際の制御文字を作成できます。)\r
        $'...'\r$'...\r...'
    • 予期しない\r文字を含むファイル改行が\n文字だけでなく\r\nシーケンスであるWindowsの世界とインターフェイスするときに頻繁に発生し、そのようなファイルはUnixの世界では奇妙に動作します。
  • データを調べるための簡単な方法は、それがにパイプにあるcat -etハイライトとして文字を制御、^<char>シーケンス:
    • ^M\r(CR)を表します
    • ^I\t(タブ文字)を表します
    • ^[ ESC文字を表します。
    • ... # see 'man cat'
    • 行の終わりは次のように表されます $
    • したがって、Windowsスタイルの行末を持つファイル^M$は、によって出力された行の終わりに表示されcat -etます。
  • cat -et 上記の例に適用すると、次のようになり、問題の診断が容易になります。
    • echo $'abcd\refg' | cat -et # -> 'abcd^Mefg$' - note the ^M
  • dos2unixWindowsスタイルの行末(\r\n)をUnixのもの(\r\n変換するための頼りになるツールですが、このツールはほとんどのUnixライクなプラットフォームにプリインストールされておらず、標準のPOSIXユーティリティを使用してそのような変換を実行するのは簡単です。
    • awk 'sub("\r$", "")+1' win.txt > unix.txt
    • ただし、このPOSIX準拠のコマンドでは、ファイルをインプレース置き換えることはできません
      • GNU を使用している場合sed、以下はその場で変換を実行します
        • sed -i 's/\r$//' winIn_UnixOut.txt
      • BSD sed(また、上で使用されるOSX)からbashkshまたはzsh
        • sed -i '' $'s/\r$//' winIn_UnixOut.txt

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

bash シェル スクリプト内で動作しないコード行

分類Dev

シェルスクリプトのifステートメントでのdiffコマンドの動作

分類Dev

スクリプトとシェルで動作が異なるコマンド

分類Dev

マルチモジュールプロジェクトでの奇妙なコンパイラの動作

分類Dev

異なるJavaアプリケーションのエクスポートオプションでの奇妙な動作

分類Dev

Bashリバースシェルの奇妙な動作

分類Dev

bashスクリプトでの「jobs」コマンドの奇妙な動作

分類Dev

jQuery水平スクロールスクリプトの奇妙な動作

分類Dev

makefileでの「シェルエクスポート」の動作

分類Dev

シェルスクリプトでの動作が異なる `curlifconfig.me`

分類Dev

pylab:シェルとスクリプトでの異なる動作

分類Dev

LibGDXスクリーンショットの奇妙な動作

分類Dev

LibGDXスクリーンショットの奇妙な動作

分類Dev

マテリアルUIのボックスコンポーネントでのボックスシャドウの奇妙な動作

分類Dev

Webアプリケーションのコンテキストスコープの奇妙な動作

分類Dev

Webアプリケーションのコンテキストスコープの奇妙な動作

分類Dev

ツールストリップボタンの奇妙な動作

分類Dev

Gitで奇妙な動作をするPycharm(ツリーエントリのファイル名にバックスラッシュが含まれています)

分類Dev

シェルスクリプトの引用符がシェルコマンドの引用符と異なる動作をするのはなぜですか?

分類Dev

ネストされたForループでの奇妙な動作

分類Dev

シェルスクリプトとシェルでの動作が異なりますか?

分類Dev

bashスクリプト、forループのファイル名のスペースの処理奇妙な動作

分類Dev

ジェネリッククラスとリストでの奇妙なコンパイルエラー

分類Dev

新しいプロジェクトをコンパイルできないgmpの奇妙な動作

分類Dev

Perlスクリプトの奇妙な動作(追加のスラッシュ)

分類Dev

行末でのANSIエスケープコードの奇妙な動作

分類Dev

シェルスクリプトでsedの動作が異なるのはなぜですか?

分類Dev

abort()システムコールのラップ中の奇妙な動作

分類Dev

スコープの奇妙な動作

Related 関連記事

  1. 1

    bash シェル スクリプト内で動作しないコード行

  2. 2

    シェルスクリプトのifステートメントでのdiffコマンドの動作

  3. 3

    スクリプトとシェルで動作が異なるコマンド

  4. 4

    マルチモジュールプロジェクトでの奇妙なコンパイラの動作

  5. 5

    異なるJavaアプリケーションのエクスポートオプションでの奇妙な動作

  6. 6

    Bashリバースシェルの奇妙な動作

  7. 7

    bashスクリプトでの「jobs」コマンドの奇妙な動作

  8. 8

    jQuery水平スクロールスクリプトの奇妙な動作

  9. 9

    makefileでの「シェルエクスポート」の動作

  10. 10

    シェルスクリプトでの動作が異なる `curlifconfig.me`

  11. 11

    pylab:シェルとスクリプトでの異なる動作

  12. 12

    LibGDXスクリーンショットの奇妙な動作

  13. 13

    LibGDXスクリーンショットの奇妙な動作

  14. 14

    マテリアルUIのボックスコンポーネントでのボックスシャドウの奇妙な動作

  15. 15

    Webアプリケーションのコンテキストスコープの奇妙な動作

  16. 16

    Webアプリケーションのコンテキストスコープの奇妙な動作

  17. 17

    ツールストリップボタンの奇妙な動作

  18. 18

    Gitで奇妙な動作をするPycharm(ツリーエントリのファイル名にバックスラッシュが含まれています)

  19. 19

    シェルスクリプトの引用符がシェルコマンドの引用符と異なる動作をするのはなぜですか?

  20. 20

    ネストされたForループでの奇妙な動作

  21. 21

    シェルスクリプトとシェルでの動作が異なりますか?

  22. 22

    bashスクリプト、forループのファイル名のスペースの処理奇妙な動作

  23. 23

    ジェネリッククラスとリストでの奇妙なコンパイルエラー

  24. 24

    新しいプロジェクトをコンパイルできないgmpの奇妙な動作

  25. 25

    Perlスクリプトの奇妙な動作(追加のスラッシュ)

  26. 26

    行末でのANSIエスケープコードの奇妙な動作

  27. 27

    シェルスクリプトでsedの動作が異なるのはなぜですか?

  28. 28

    abort()システムコールのラップ中の奇妙な動作

  29. 29

    スコープの奇妙な動作

ホットタグ

アーカイブ