#!/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