#!/bin/bash
for arg
do
echo "$arg"
done
在文件中调用compile。解析bash中的命令行参数 - 奇怪行为
我尝试这样做:
compile ha -aa -bb -cc -dd -ee -ff -gg
ha
-aa
-bb
-cc
-dd
-ff
-gg
为什么-ee显示不出来? 事实上,似乎 - [e] +没有出现。
#!/bin/bash
for arg
do
echo "$arg"
done
在文件中调用compile。解析bash中的命令行参数 - 奇怪行为
我尝试这样做:
compile ha -aa -bb -cc -dd -ee -ff -gg
ha
-aa
-bb
-cc
-dd
-ff
-gg
为什么-ee显示不出来? 事实上,似乎 - [e] +没有出现。
由于echo
的版本使用-e
作为选项(意思是“扩展转义字符”)。
编辑补充:
该标准针对这种类型的问题是“用printf”,这是严格准确的,但有些不尽人意。由于它处理多个参数的方式,使用printf
更麻烦。因此:
$ echo -e a b c
a b c
$ printf "%s\n" -e a b c
-e
a
b
c
$ printf "%s" -e a b c
-eabc$ # That's not what I wanted either
当然,你只需要记住引用整个参数序列,但可能会导致恼人的报价转义的问题。
因此,我为你的快感呼应:
$ ech-o() { printf "%s\n" "$*"; }
$ ech-o -e a b c
-e a b c
$
Here它说,这是不可能的GNU回波,但你可以用printf。
for arg
do
printf "%s\n" "$arg"
done