在 bash 中查找命令与在 cli 中查找命令

find command in bash vs find command in cli

我需要在文件路径中容纳空格。为什么“查找”在脚本中不起作用,但在 cli 中起作用?

MyLaptop$ ./my-bash-script.sh

find: '/Sandbox/test folder/testfiles-good/ResidentFile_1.pcapng': No such file or directory

MyLaptop$ find '/Sandbox/test folder/testfiles-good/ResidentFile_1.pcapng'

/Sandbox/test folder/testfiles-good/ResidentFile_1.pcapng

Using echo find -f "'$line'"

output: find -f '/Sandbox/test folder/testfiles-good/ResidentFile_1.pcapng'

但在这种情况下:FOUND="$(find -f "'$line'")" 它没有

在这种情况下...

FOUND="$(find -f "'$line'")"

...您正在向 find 询问名称包含前导和尾随 ' 个字符的文件。这不太可能是你想要的。虽然看起来很奇怪,但这可能就是你的意思:

FOUND="$(find -f "$line")"

命令替换中的 " 字符不与外部的字符配对(如果配对,则原始命令替换将以不同的方式出错)。另一方面,当在变量赋值的 right-hand 侧使用命令替换的结果时,不会对其执行分词,因此您也可以只使用

FOUND=$(find -f "$line")