ls コマンドは bash スクリプトに引用符を追加します。

ls コマンドは bash スクリプトに引用符を追加します。

test.mp3とtest.mp4ディレクトリを含むフォルダ1というフォルダがあります。

次のbashスクリプトがあります。

ORIGINATION_PATH=folder1
ext=mp*
files=($(ls "$ORIGINATION_PATH"/test/$ext))
for f in "${files[@]}"
do
    echo f
done

私のファイルの配列にtest.mp3とtest.mp4が含まれたいのですが、スクリプトは私のlsコマンドパスをqoutesにラップするため、次のエラーが発生します。ls: cannot access 'folder1/test/mp*': No such file or directory

ベストアンサー1

コードのエラーは、*.前に入れなかったことです。$ext

files=($(ls "$ORIGINATION_PATH"/test/*.$ext))

しかし、@jasonwryanが指摘したように、lsを解析しないでください

lsこの場合、以下を行う必要はありません。

files=("$ORIGINATION_PATH"/test/*.$ext)

または

for f in "$ORIGINATION_PATH"/test/*.$ext

ワイルドカードを試してください。

おすすめ記事