🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

1回答

4525閲覧

echo文の出力結果が上書きされる

infra____

総合スコア90

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2021/03/25 05:28

編集2021/03/25 06:03

■実行コマンド

bash bash.sh testファイル

■shファイル

bash

1awk -F ',' '{print $1}' $1 | while read a ; do 2 3echo aws s3 rm --recursive s3://${a} --profile IAM 4 5done

■testファイル
aaa
bbb
ccc

■出力結果
--profile IAM --recursive s3://aaa

■解決したいこと
--profile IAMが上書きされる理由はなぜですか?
改行コードを記述すれば、上書きされずに済みますが、上書きされる理由が知りたいです。

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

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

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

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

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

otn

2021/03/25 05:42

> ■出力結果 > --profile ${IAM} --recursive s3://${a} 変数aやIAMの内容が展開されずに変数名のまま表示されると言うことですか?ちょっと考えにくいので、確認ミスでしょう。 > 上書きされる理由はなぜですか? 「上書き」とは具体的にどんな現象を見て言っていますか?
infra____

2021/03/25 05:53

ご返信ありがとうございます。 期待する出力は、以下なのですが(変数は展開されると仮定してください)、 aws s3 rm --recursive s3://${a} --profile ${IAM} 現状は、 aws s3 rmの部分に--profile ${IAM}が出力されて、以下のようになります。 -profile ${IAM} --recursive s3://${a} 上書き=改行されないと理解しております。
otn

2021/03/25 05:58

実際には変数は展開されて出力されているが、何らかの理由で変数名のまま記述した ということでしょうか? ちょっと注記無しでは意図が理解不能なので、それならそのように注記してください。 回答しておきます。
infra____

2021/03/25 06:03

回答ありがとうございます。 今後に生かします。 また、変数名を展開したバージョンに更新しましたので、ご確認お願い致します。
guest

回答1

0

ベストアンサー

aws s3 rmの部分に--profile ${IAM}が出力されて、以下のようになります。

なるほど。読み込んだファイルの改行コードが CRLF だけど、シェルやコマンドは LF だけを改行と見るので、CR はデータの一部になってしまうと言うことです。
CR を出力すると、出力位置が行頭に戻ります。
参考:

Bash

1echo $'aaaaaa\rbbb'

ファイルの改行コードをLFにしておくか、処理中で CR を削除します。

sh

1awk -F ',' '{print $1}' $1 | tr -d '\r' | while read a 2do 3 echo aws s3 rm --recursive s3://${a} --profile ${IAM} 4done

投稿2021/03/25 06:05

otn

総合スコア85888

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

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

infra____

2021/03/25 06:08

返信ありがとうございます。 さすが、Linux総合1位さんですね。 引き続きよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問