假设我有一个可执行文件myProgram
,它将文件名作为参数之一,并将大量内容输出到stdout
。现在我想写一个bash
脚本来调用myProgram
并将输出传递给less
。通常我会创建一个bash脚本myCommand
:
#!/bin/bash
myProgram $* | less
但不知何故,bash会将包含空格的任何文件名拆分为多个参数。例如,它转换
myCommand some\ file -m 5
到
myProgram some file -m 5 | less
当然会导致错误。有没有办法解决这个问题?我尝试在"
附近添加$*
,但后来意识到它无济于事,因为它会导致整个参数列表成为单个参数,这不是我想要的。
答案 0 :(得分:4)
将$*
替换为"$@"
myProgram "$@" | less