【发布时间】:2015-01-21 17:06:00
【问题描述】:
我正在尝试编写一个脚本,该脚本将显示执行该脚本的目录中最旧文件的名称。
这是我目前所拥有的:
#!/bin/bash
for arg in $*
do
oldest=$1
if [[ $arg -ot $oldest ]]
then
oldest=$arg
fi
done
echo "Oldest file: $oldest"
我不确定如何递增到下一个文件以检查它是否较旧
例如:
oldest=$2
oldest=$3
etc..
尝试在给定以下参数的 bash shell 中运行此脚本:
myScript `ls -a`
我得到以下结果:
Oldest File: .
【问题讨论】:
-
for arg in $*有问题 - 尝试使用包含空格或带引号的通配符的参数以了解原因。for arg in "$@"或只是for arg(默认行为是迭代"$@")是正确的选择。当然,所有这些都假设您正在迭代命令行参数,而不是文件。 -
...要遍历文件,它是
for arg in *,可能在循环内带有[ -d "$arg" ] && continue以跳过目录。