【问题标题】:Shell: Generate a filename by appending a variableShell:通过附加变量生成文件名
【发布时间】:2016-05-11 04:55:45
【问题描述】:

我收到的文件名包含 3 个部分。

  • 前缀:foobar_
  • 日期:2015-12-31_
  • 文件编号:100.dat

将它们放在一起,我们得到 foobar_2015-12-31_100.dat。目前挑选具有今天日期和正确文件编号的文件有效。因此,下一个文件编号为 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 为假?

【问题讨论】:

    标签: shell if-statement filenames


    【解决方案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
    

    * 将使它适用于两者之间的任何日期。

    【讨论】:

    • 是的,我真傻!感谢您的提醒!应该这样做!
    猜你喜欢
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    相关资源
    最近更新 更多