传递可变参数时查找的奇怪行为

米扎尔

我创建了一个名为foo bar(使用命令touch foo\ bar的文件

然后,在Bash中,我尝试了以下命令:

s='"foo bar"'; find $s
s='"foo bar"'; find "$s"
s="foo bar"; find "$s"

在第一个find文件中查找名为的文件"foo,然后查找名为的文件bar"

在第二个find文件中查找名为的文件"foo bar"

两条命令均失败:find找不到任何文件。

最后,第三个命令具有预期的行为:find查找foo bar并显示它。

我知道不逃避空格字符是不正确的做法,但是有人可以解释一下这是怎么回事吗?为什么第二个命令不起作用?

fedorqui'停止伤害'

我知道不逃避空格字符是不正确的做法,但是有人可以解释一下这是怎么回事吗?为什么第二个命令不起作用?

因为您正在寻找一种叫做的东西"foo bar"你引用太多了:)

通过说:

s='"foo bar"'

您指出该变量$s实际上是"foo bar"即,引号属于变量内容。

  • 当你说:

    find "$s"
    

您正在尝试查找名称全为"foo bar"带引号的文件。然后,如果我们使用这个确切的名称创建文件,它将起作用:

$ touch '"foo bar"'
$ s='"foo bar"'; find "$s"
"foo bar"
  • 当你说:

    $ s='"foo bar"'; find $s
    find: ‘"foo’: No such file or directory
    find: ‘bar"’: No such file or directory
    

您实际上是在说:

$ find \"foo bar\"
find: ‘"foo’: No such file or directory
find: ‘bar"’: No such file or directory

也就是说,您find与两个参数一起使用:"foobar"这些文件都不存在。但是,再次,如果您创建其中之一,瞧!

$ touch '"foo'
$ find \"foo bar\"
"foo
find: ‘bar"’: No such file or directory

注意find X Yis的行为是寻找Xand Y

$ find a b
find: ‘a’: No such file or directory
find: ‘b’: No such file or directory

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

奇怪的angularJs可变行为

来自分类Dev

奇怪的angularJs可变行为

来自分类Dev

使用 React Navigation 传递的参数中的奇怪行为

来自分类Dev

jQuery查找的奇怪行为

来自分类Dev

Scala可变集:奇怪的行为

来自分类Dev

.UI中的.sheet在传递变量时的奇怪行为

来自分类Dev

在累积API中使用“还原”参数时的奇怪行为

来自分类Dev

如何传递可变参数?

来自分类Dev

查找和du的奇怪行为

来自分类Dev

在带有可变参数的函数中传递“枚举”时出错

来自分类Dev

传递可变长度参数列表时遇到麻烦

来自分类Dev

默认参数值的奇怪行为

来自分类Dev

奇怪的箭头函数参数行为

来自分类Dev

默认参数值的奇怪行为

来自分类Dev

bash函数参数奇怪的行为

来自分类Dev

向shell脚本传递参数时,expect shell的异常行为

来自分类Dev

将参数传递给PowerShell函数时的不同行为

来自分类Dev

排序CMFCListCtrl时的奇怪行为

来自分类Dev

FBSession登录时的奇怪行为

来自分类Dev

从SharedPreferences读取时的奇怪行为

来自分类Dev

比较数字时的奇怪行为

来自分类Dev

更新矩阵时的奇怪行为

来自分类Dev

查询Solr时的奇怪行为

来自分类Dev

Micropython - 粘贴时的奇怪行为

来自分类Dev

使用 malloc 时的奇怪行为

来自分类Dev

抓取时硒的奇怪行为

来自分类Dev

如何快速传递可变参数?

来自分类Dev

将struct属性(切片)传递给从中删除元素的函数时的奇怪行为

来自分类Dev

将数组传递给ObservedObject属性时发生奇怪的行为-.count似乎返回错误的值