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

前端之家收集整理的这篇文章主要介绍了bash – 使用变量中的参数查找命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
> find /etc -name 'shells'
/etc/shells     # good !!

> SEARCH="-name 'shells'"; find /etc $SEARCH
# nothing found - bad !!
@H_404_3@为什么“find”命令不能在变量中使用params?

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

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

你的问题是简单的引号不是这样解释的,而是在你的参数中. @H_404_3@你认为你已经执行了这个:

find /etc -name 'shells'
@H_404_3@事实上你已经执行了这个:

find /etc -name \'shells\'
@H_404_3@请记住:在bash中,双引号内的简单引号不会被忽略.

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

SEARCH="-name shells"; find /etc $SEARCH
@H_404_3@更好的解决方案是使用引号然后使用eval:

SEARCH="-name 'shells'"; eval " find /etc $SEARCH"
@H_404_3@安全问题:从未在eval参数中使用用户提供的信息.

猜你在找的Bash相关文章