Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让bash正确解析带有空格的文件名?_Bash - Fatal编程技术网

如何让bash正确解析带有空格的文件名?

如何让bash正确解析带有空格的文件名?,bash,Bash,假设我有一个可执行的myProgram,它将文件名作为参数之一,并将大量内容输出到stdout。现在我想编写一个bash脚本来调用myProgram,并通过管道将输出传输到less。通常我会创建一个bash脚本myCommand: #!/bin/bash myProgram $* | less 但不知何故,bash会将任何带有空格的文件名拆分为多个参数。例如,它转换为 myCommand some\ file -m 5 进入 这当然会导致错误。有没有办法解决这个问题?我尝试在$*周围添加“,

假设我有一个可执行的
myProgram
,它将文件名作为参数之一,并将大量内容输出到
stdout
。现在我想编写一个
bash
脚本来调用
myProgram
,并通过管道将输出传输到
less
。通常我会创建一个bash脚本
myCommand

#!/bin/bash
myProgram $* | less
但不知何故,bash会将任何带有空格的文件名拆分为多个参数。例如,它转换为

myCommand some\ file -m 5
进入


这当然会导致错误。有没有办法解决这个问题?我尝试在
$*
周围添加
,但后来意识到这没有用,因为它会导致整个参数列表变成一个单独的参数,这不是我想要的。

“$@”
替换
$*


myProgram“$@”| less

$*
替换为
“$@”
。可能存在重复的
myProgram some file -m 5 | less