bash – 使用变量中的参数查找命令

> find /etc -name 'shells'
/etc/shells     # good !!

> SEARCH="-name 'shells'"; find /etc $SEARCH
# nothing found - bad !!

为什么“find”命令不能在变量中使用params?

其他命令在这种模式下工作正常.它可能与空格和解析有关.我怎样才能首先在变量中构造params然后用这个参数执行“find”?

要清楚,我想创建-name xxxx -o -name yyyyy -o -name zzzzz的链,然后通过一次运行查找所有文件

你的问题是简单的引号不是这样解释的,而是在你的参数中.

你认为你已经执行了这个:

find /etc -name 'shells'

事实上你已经执行了这个:

find /etc -name \'shells\'

请记住:在bash中,双引号内的简单引号不会被忽略.

因此解决方案是不要提出任何简单的引用:

SEARCH="-name shells"; find /etc $SEARCH

更好的解决方案是使用引号然后使用eval:

SEARCH="-name 'shells'"; eval " find /etc $SEARCH"

安全问题:从未在eval参数中使用用户提供的信息.

相关文章

普通模式 >G 增加当前行到文档末尾处的缩紧层级 $ 移动到本行的末尾 . 相当于一个...
原文连接: https://spacevim.org/cn/layers/lang/elixir/ 模块简介 功能特性 启用模块 快捷键 语言专属...
原文连接: https://spacevim.org/cn/layers/lang/dart/ 模块简介 功能特性 依赖安装及启用模块 启用模...
 =   赋值操作符,可以用于算术和字符串赋值 +        加法计算     -        减法运算...
1.根据包名来查看指定的APP指定数据 adb shell "top | grep com.xxx.xxx" 由于这样打印出来的数...
ctrl+F 向下翻页 ctrl+B 向下翻页 u 取消最近一次操作 U 取消当前行的操作 ZZ 保存当前内容并退出 gg 跳...