0
#!/bin/bash

for arg
do
        echo "$arg"
done

compile というファイルで。

私はこれを試しました:

compile ha -aa -bb -cc -dd -ee -ff -gg
ha
-aa
-bb
-cc
-dd

-ff
-gg

-ee が表示されないのはなぜですか? 実際、-[e]+ は表示されないようです。

4

2 に答える 2

4

使用するバージョンがオプションとして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
$
于 2012-10-24T03:52:35.360 に答える
1

ここでは、GNUエコーでは不可能であると述べていますが、printfを使用することはできます。

for arg
do
    printf "%s\n" "$arg"
done
于 2012-10-24T14:49:59.437 に答える