脚本函数如何正确传递带空格的参数?

想写一个用nohup执行命令的脚本,比如用FoxitReader打开指定文件"~/test/1 2.txt"这种有空格的文件。

#!/bin/bash

#后台运行命令,输出弃置,用nohup使关闭主进程后进程不关闭
runbg()
{
nohup $* > /dev/null 2> /dev/null &
}

runbg FoxitReader “/home/xx/test/1 2.txt”

执行报错,无法打开/home/xx/test/1,但是如果文件名不带空格可以正常执行,或者直接nohup FoxitReader "/home/xx/test/1 2.txt"也可以正常运行。请问这种情况如何传递正确的文件名给函数?谢谢哈。

试试单引号或空格转义。

$ cat '1 2.txt'

$ cat 1\ 2.txt
1 个赞

"$@" 取代 $*。当然更好的做法是不要用 bash / POSIX sh。换 Python 或者 zsh 都行。

可行,多谢多谢哈