2016-02-02 37 views
1

我收到的文件名有3個部分。Shell:通過追加變量生成文件名

  • 前綴:foobar_
  • 日期:2015-12-31_
  • FILENUM:100.dat

把它們放在一起,我們得到foobar_2015-12-31_100.dat。目前選擇文件與今天的日期和正確的filenum作品。所以,下一個filenum是101.請檢查腳本以瞭解。

echo "Checking for file" 
    DBNR=`mysql -uroot -p$DBPWD test_schema -sNe 'SELECT max(file_id) FROM filenumbers WHERE filetype="D"'` 
    echo "Last number is: ${DBNR}" 
    NEXTNUM=$((DBNR+1)) 
    NEXTFILE="foobar_${TODAY}_${NEXTSEQ}.dat" 

    echo ">>>>> NEXT FILENAME: ${NEXTFILE}" # $TODAY is optional 

    if [ -f "${NEXTFILE}" ]; then 
    echo ">>>>> Correct file exists!" 

    else echo "Incoming dir is not empty but expected file is not present." 

NEXTFILE所在的行正在爲特定文件生成,但註釋狀態爲$ TODAY是可選的。我如何再排除$ TODAY讓if語句下面將評估爲true的文件名:

  • foobar_2016-02-01_101.dat,或
  • foobar_2016-01-30_101.dat,或
  • foobar_2016-02-02_101.dat?

並評估foobar_2016-02-01_102.dat爲false?

回答

1

我相信你可以使用這個檢查:

if [[ -f foobar_*_${NEXTSEQ}.dat ]]; then 
    echo ">>>>> Correct file exists!" 
else 
    echo "Incoming dir is not empty but expected file is not present." 
fi 

*將使其成爲兩者之間的任何日期的工作。

+1

是的,傻我!感謝您的提醒!這應該做到! – dat789