Вот упрощенный способ:
print_last_arg () {
if [ "$#" -gt 0 ]
then
s=$(( $# - 1 ))
else
s=0
fi
shift "$s"
echo "$1"
}
(обновлено на основе утверждения @ cuonglm о том, что исходный код завершился неудачно, когда не было передано аргументов; теперь отображается пустая строка - при желании измените это поведение в предложении else
)
В AIX с помощью/bin/ksh93
:
grep "_$(printf '%(%Y%m%d)T' yesterday)" filename
Или:
grep "$(printf '_%(%Y%m%d)T' yesterday)" filename
или:
yesterday=$(printf '%(%Y%m%d)T' yesterday)
grep "_$yesterday" filename
Обратите внимание, что
TZ=aaa24 date
даст дату на 24 часа раньше даты UTC, поэтому действителен только для предоставления вам вчерашней даты, когда местное время следует за UTC (, хотя он может дать вам правильную дату в некоторые часы дня в другое время зоны ).
Я не знаю, что это за "ааа24" в вашем вопросе, но это может вам помочь:
Используйте подстановку команд для оценки команды date
перед запуском grep.
grep $(date +%Y%m%d) foo