【问题标题】:if filename then move file如果文件名则移动文件
【发布时间】:2020-05-19 19:29:09
【问题描述】:

我使用 if 命令 if filename then move file

这是我目前所拥有的

filename=$*test*
if [ -f "filename" ]
then
  mv filename archive/filename
else
  echo "no filename exists"
fi

当我运行脚本时,我得到“不存在文件名”

如何使用通配符作为变量?

【问题讨论】:

  • 这是什么语言?请在您的问题中添加适当的标签。你期望$*test* 是什么?
  • 这是 bash。我正在寻找 test 作为文件名一部分的通配符

标签: bash if-statement filenames


【解决方案1】:

您的脚本有几个问题。

filename=$*test*

$*test* 不是有效的 bash 语法。 $ 表示一个变量。

我正在寻找 test 作为文件名一部分的通配符

如果是这种情况,您需要删除前导 $。或者你的意思可能是*${test}*

mv filename archive/filename

这会移动一个名为“filename”的文件,这可能不是您想要的。你可能想要:

mv "$filename" archive/

如果不重命名文件,则不需要在目标中指定名称。

如果你改变这一行:

echo "no filename exists"

到:

echo "no $filename exists"

包含美元符号,您将确切地看到脚本试图查找的文件。

一些补充说明:

  • 在脚本开头包含set -x。这将向您显示展开的每个命令,以便您了解实际发生的情况。
  • 看看https://www.shellcheck.net/,它会发现很多语法错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-07
    • 2020-04-16
    • 1970-01-01
    • 2017-04-16
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多