我想创建一个带有简单功能的shell脚本,但似乎我不能正确处理反斜杠。其中一个函数如下:
#!/bin/sh
func() {
cmd="$*"
printf "%s\n" "$cmd"
echo -e $cmd
}
func '%{NAME}\\n'
这是我需要的正确输出结果:
%{NAME}\\n
%{NAME}\n
现在的问题是,我不能使用“echo -e”,因为这个脚本需要在*nix系统上运行,在那里echo命令没有“-e”标志(例如HPUX),这也是为什么我必须使用sh而不是bash的原因。由于我希望使这个脚本尽可能地可移植,所以我要避免使用tr/sed或(更糟糕的是)脚本语言。
输入字符串的格式可以任意选择。我之前使用%{NAME}是因为如果它只包含常规字符,类似这样的东西就可以工作:
#!/bin/sh
func() {
cmd="$*"
printf "%s\n" "$cmd"
printf $cmd
echo
}
func 'NAME\\n'
很不幸,这会在像“%”这样的字符中断:
%{NAME}\\n
func.sh: line 6: printf: `{': invalid format character
我该如何获得期望的结果,(希望)只使用printf函数,因为在我看来它是最便携的函数?