此问题在此处已有答案:
Bash: echo string that starts with "-"(4个答案)
4天前关闭。
我在我的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'作为参数。
2条答案
按热度按时间lymgl2op1#
-n
可能被解释为echo
命令的选项。要避免此问题,请使用useprintf
instead:9lowa7mx2#
将参数传递给
echo
的方式使它们被视为echo
的开关,并且由于-n
是有效的开关(顺便说一句,-e
也是我的echo
上的有效开关,如果你在这里只使用-p
,你会很幸运)。没有被回显。如果你想用回显打印它们,你可以尝试添加--
来表示参数的结束,因此$arg
不会被解释为(echo -- $arg
),但这也可能取决于您使用的shell。编辑:由于对
--
的支持不是默认的,您可能需要将echo
替换为printf
: