質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

Q&A

解決済

1回答

506閲覧

シェルスクリプトが期待通りに動作しない

ex025

総合スコア179

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

標準出力

標準出力(stdout)は、プログラムが標準的に用いるデータ出力元。標準出力に書き込み要求を発行しすることにより、ディスプレイ装置にデータを表示することができます。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

シェル

シェル(shell)はUnix や Linux 系のOSで使用されるコマンドインタプリタを指します。

zsh

zshは、UNIX系OSのシェルの1つです。 cshやksn系のコマンドライン編集機能も実装されたシェルです。

0グッド

1クリップ

投稿2021/05/04 13:38

編集2021/05/04 13:40

macのターミナル(zsh)で以下のシェルスクリプトを実行しましたが、期待通りの出力にならない理由がわかりません。

zsh

1#!/bin/zsh 2 3a=`grep ^A conf.txt` 4b=`grep ^B conf.txt` 5 6echo $a 7echo $b 8 9echo ${a}${b}

conf.txt

txt

1A 2B

期待する出力

A B AB

実際の出力

A B B

以下のスクリプトは、期待通りの出力をします。

zsh

1#!/bin/zsh 2 3a="A" 4b="B" 5 6echo $a 7echo $b 8 9echo ${a}${b}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/05/04 13:53

WSL2 Ubuntuで試したら期待する出力になりました。 そのスクリプトの標準出力をファイルにリダイレクトすると、そのファイルの内容はどうなりますか?
ex025

2021/05/04 14:04

「実際の出力」と同じ内容でした。
itagagaki

2021/05/04 17:17

そのファイルの内容をまた端末に出力して確認したら同じことなので、ファイルの内容をダンプしたりテキストエディタ等で確認してほしかったのです。
ex025

2021/05/05 00:14

そう言うことでしたか。ありがとうございます。 テキストエディタで見ると、 A B のように出力されていました。
guest

回答1

0

ベストアンサー

おそらく、conf.txtの改行コードがCR LF(\r\n)になっていて、
A \r B \rを出力しているので、ABで上書きされています。

改行コードをLFにしましょう。

投稿2021/05/04 14:08

otn

総合スコア84423

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ex025

2021/05/04 14:30

ありがとうございます。 改行コードを変更すると期待通りに出力されました。 実際に動かしているスクリプトではtsvファイルを読み込んでいて、excelで編集されることを想定しているので、「sed 's/\r//g'」を書いて\rを削除することで対応しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問