変数にコマンド出力を書き込む[閉じる]

変数にコマンド出力を書き込む[閉じる]

コマンドの出力を変数に入れたいです。私が知っている限り、次のいずれかを使用する必要があります。

variable=$(command)
variable=`command`

私の観点からは、以下が機能するはずです。

for i in $(ls -1); do
    modTime=$(/usr/gnu/bin/date -r $i +$F)
    echo $modTime
done

私もバックティックを試しました。重要なのはbashシェルです。

答え1

まず、決して解析しないでくださいls。出力は人間が読めると見なされ、構文解析用には設計されていません。以下のように単純にワイルドカードを繰り返す方が良いです。

実際の問題は$F代わりに使用していることです%F。前者は空の変数なので、dateコマンドの出力はありません。したがって、これは修正されたコマンドです。

for i in ./*; do
    modTime="$(/usr/gnu/bin/date -r "$i" +%F)"
    echo "$modTime"
done

ただし、単一のfindコマンドで目的の操作を実行する必要があります。

find ./ -maxdepth 1 -printf "%TY-%Tm-%Td\n"

関連情報