Shell 脚本 - 为什么将 '-n' 传递给函数不起作用



我的shell脚本中有一个接受选项的函数。它工作得很好,直到我尝试传递'-n'选项,然后函数无法读取参数。

func ()
{
for arg in "$@"
do
echo $arg
done
}
func -p #works
func -e #works
func -n #doesn't work, func cannot read arg

有人知道为什么会发生这种情况吗?

已尝试:向函数传递多个选项,它们都有效,除了'-n'。期望:在我的函数中读取'-n'作为参数

-n可能被解释为echo命令的选项。为了避免这种情况,使用printf代替:

printf '%sn' "$arg"

您将参数传递给echo的方式使它们被认为是echo的开关,并且由于-n是一个有效的开关(顺便说一句,-e也是我的echo上的有效开关,您将幸运地在这里使用-p)。没有得到回应。如果您想使用echo打印它们,您可以尝试添加--来表示参数的结束,因此$arg不会被解释为(echo -- $arg),但这也可能取决于您正在使用的shell。

编辑:由于对--的支持不是默认的,你可能想用printf代替echo:

printf "%sn" "${arg}"

相关内容

  • 没有找到相关文章

最新更新