【发布时间】:2019-11-22 06:05:34
【问题描述】:
我正在尝试编写一个 BASH 脚本,它将递归删除目录中的所有文件。
当我在控制台rm -rf /home/dir/dir/* 中编写时,它工作得很好,但我不能使用变量来做到这一点。
VAR="/home/dir/dir"
rm -rf "$VAR"/*
此代码对我不起作用。
更新。 这真的很奇怪。我试过删除引号,但没有用。
这是我的整个文件:
#### VARIABLES
LOGS_PATH="~/Документы/tellbot_work/tellbot-autotest/mega-test/Reports/Mega\ test"
#### End of variables
#### FUNCTIONS
delete_logs()
{
rm -rf $LOGS_PATH/*
echo "Logs from $LOGS_PATH were deleted"
}
#### End of functions
#### MAIN
delete_logs
#### End of main
在输出中它显示了文件的正确路径...
【问题讨论】:
-
你得到什么错误?
echo "$PATH"/*"打印什么?你真的使用PATH作为你的变量吗? -
你确定要在这里使用系统变量
PATH吗? -
1: 不要使用
PATH。 2: DO NOT 构造这个,这样就可以让那个变量为空,特别是如果你以 root 身份执行它... 3: 你遇到了什么错误? -
对不起。我忘记了,PATH是系统变量。我已经改了。
-
如果使用的变量包含代字号来引用用户的主目录,我发现了一些问题。因此,例如
ls "~"不起作用。但是如果你做rm -rf "$VAR"/*之类的事情,你应该非常小心。如果VAR为空,你知道会发生什么......