コマンド置換内容を含むエコー変数

コマンド置換内容を含むエコー変数

私は次の非常に基本的なコマンド置換スクリプトを書いています。

#!/bin/bash
files=$(ls *.fastq);
echo $files

ディレクトリには複数の.fastqファイルが含まれており、echoコマンドを使用してそのファイルを出力したいと思います。

上記のスクリプトは、各 fastq ファイル名の間にスペースを含む fastq ファイルを出力します。

このように使ってみると

#!/bin/bash
files=$(ls *.fastq);
echo "$files"

結果を新しい行に印刷します。

なぜですか?これはコマンドの置き換えに関連していますか?

ありがとう

ベストアンサー1

ls別の行に配置したので、改行があります。シェルは引用符なしでスペースで区切られた各テキストを別々の引数としてコマンドに渡すため、改行は引用符なしで消えます。

注:コマンドの置き換えはシェルによって行われます。仕方ないlsしたがって、必要はありませんls

したがって、あなたはできます

#!/bin/bash
echo *.fastq

または

#!/bin/bash
files="*.fastq"
echo "$files"

おすすめ記事