Предполагая, что GNU date
доступен, вы можете использовать этот скрипт bash
/ ksh93
/ zsh
:
start=$(date -ud 20170301 "+%s") # start time in epoch time (seconds since Jan. 1st, 1970)
end=$(date -ud 20170831 "+%s") # end time
for ((i=start; i <= end; i+=86400)); do # 86400 is 24 hours
runCerclient-layer-name "$(date -ud "@$i" +%Y%m%d)"
done
Вы можете
5<&"$fd"
:продублировать fd $fd
на fd 5 (где 5 является буквальным )в любой Bourne -подобной оболочке (хотя имейте в виду, что когда yash находится в режиме posix, это не будет работать, если $fd
не открыт для чтения ). {fd}<&-
:закрыть фд $fd
в зш, баш, кш93 Но вы не можете сделать "$fd">anything
, так как вы не хотите, чтобы echo "$something">file
не выводил содержимое $something
в file
, если это содержимое содержит только десятичные цифры.
В zsh, bash и ksh93 вы можете использовать {fd}> something
для автоматического выделения fd выше 9 и сохранения в $fd
, но это не то, о чем вы просите.
Насколько я знаю, нет другого способа, кроме как использовать eval
.
Вы можете ограничить использование eval
перенаправлением только с помощьюexec
:
(eval "exec $TWO>&1"; exec date) >> logfile
Та же ситуация и в оболочке fish
.
Это также верно для rc
и производных, где используется синтаксис >[3=5]
, и оба fd должны быть буквальными.