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

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

新規登録して質問してみよう
ただいま回答率
85.48%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Q&A

解決済

1回答

435閲覧

[シェルスクリプト] 配列の要素を変数に格納したい

kei554

総合スコア12

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

0グッド

0クリップ

投稿2022/04/07 06:32

実現したいこと

私が実現したいことは配列の要素を変数に代入し、改行された状態で出力することです。
しかし、現在の私のスクリプト(fruits.sh)では、文字列が半角スペース区切りで出力されます。
for コマンドを変数(VALUE)に代入せずに実行すると、「実現したい出力結果」を得られます。しかし、変数に代入した状態で「実現したい出力結果」を得たいので、ご教授よろしくお願いします。

実現したい出力結果

$bash fruits.sh
apple
banana
grape
orange
strawberry

fruits.sh

sh

1#!/bin/bash 2 3FRUITS=(apple banana grape orange strawberry) 4 5VALUE=`for fruit in ${FRUITS[@]}; do 6 echo $fruit 7done` 8 9echo $VALUE

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下で改行された結果が表示されます。

bash

1echo "$VALUE"

投稿2022/04/07 06:41

編集2022/04/07 06:42
Y.H.

総合スコア7914

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

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

kei554

2022/04/07 09:23

こんな簡単なことだったんですね。。 while コマンドで出力される文字列には改行が含まれており、("")を付けることで改行がエスケープされるということだと認識しました。
Y.H.

2022/04/07 09:35

whileとか関係なく、変数には改行を含めることが出来ます。 echoコマンドは変数内の改行コードを改行として出力しないが""で囲むことで変数内の改行コードを改行として出力する。(厳密にはこの説明では説明し切れてないけど現象としてこうなるので。。。) って感じですね。 $ var='line 1 > line 2 > line 3 > line 4' $ echo $var line 1 line 2 line 3 line 4 $ echo "$var" line 1 line 2 line 3 line 4 $
kei554

2022/04/07 23:58

私の認識違いも指摘していただきありがとうございます! " "で囲むのと囲まないとで、違いが生まれる要因が不明でした。しかし、こういう現象が起きるものだと理解しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問