【发布时间】:2015-05-14 03:18:10
【问题描述】:
我正在尝试在 bash 脚本中将参数传递给 rm 以自动清理我的系统。例如,我想删除除 *.doc 文件之外的所有内容。所以我写了以下代码。
#!/bin/bash
remove_Target="!*.txt"
rm $remove_Target
但是,输出总是说
rm: cannot remove ‘!*.txt’: No such file or directory
很明显,bash脚本在将变量传递给rm时为我添加了单引号。如何删除单引号?
【问题讨论】:
-
之前问过这个问题:[在Linux shell中,如何删除一个目录下除了一两个之外的所有文件][1] [1]:stackoverflow.com/questions/21779328/…
-
引号只是错误消息的一部分。问题是该模式与任何文件都不匹配,因此它按字面意思传递给
rm。 -
谢谢@chepner。你说的对。单引号是来自 rm 的错误消息的一部分。我将脚本更改为 rm !(*.txt)。它现在在命令行中工作,但在 bash 脚本中失败。
-
感谢@AmirH 的建议
标签: bash