私のBashスクリプトが構文エラーを返すのはなぜですか? [コピー]

私のBashスクリプトが構文エラーを返すのはなぜですか? [コピー]

フォルダ内の最後のファイルを繰り返してコマンドを実行するスクリプトを作成しています。

#!/bin/bash
cd /home/Downloads
recent_files = ($(ls -t | head -20))
for file in "${recent_files[@]}"
do
    ./cmd $file
done

次の構文エラーが発生します。

line 3: syntax error near unexpected token `('
line 3: `recent_files = ($(\ls -t | head -20))'

ベストアンサー1

Bash変数の割り当てスキームは追加のvar=valueスペースを許可しません。

これを削除すると、ls -t | head -20出力は配列として正しく割り当てられます。

したがって、スクリプトは次のようにする必要があります。

#!/bin/bash
cd /home/Downloads
recent_files=($(ls -t | head -20))
for file in "${recent_files[@]}"
do
    ./cmd $file
done

おすすめ記事