![将命令的输出写入变量](https://linux22.com/image/89947/%E5%B0%86%E5%91%BD%E4%BB%A4%E7%9A%84%E8%BE%93%E5%87%BA%E5%86%99%E5%85%A5%E5%8F%98%E9%87%8F.png)
我想将命令的输出放入变量中。据我所知,你必须使用其中一个:
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"