将命令的输出写入变量

将命令的输出写入变量

我想将命令的输出放入变量中。据我所知,你必须使用其中一个:

variable=$(command)
variable=`command`

从我的角度来看,以下内容应该有效:

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

我也尝试过反引号;没有什么变化。如果它很重要,那就是 bash shell。

答案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"

相关内容