在 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")
我需要在文件路径中容纳空格。为什么“查找”在脚本中不起作用,但在 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")