14

私は文字列を持っています:

{2013/05/01},{2013/05/02},{2013/05/03}

最初に { を追加し、最後に } を追加したい。出力は次のようになります。

{{2013/05/01},{2013/05/02},{2013/05/03}}

ただし、シェル スクリプトで中かっこを文字列の先頭と末尾に連結すると、出力は次のようになります。

{2013/05/01} {2013/05/02} {2013/05/03}

なぜこれが起こるのですか?どうすれば結果を達成できますか? これには簡単な解決策があると確信していますが、私はUNIX初心者なので、助けていただければ幸いです。

テスト スクリプト:

#!/usr/bin/ksh 
valid_data_range="{2013/05/01},{2013/05/02},{2013/05/03}"
finalDates="{"$valid_data_range"}"
print $finalDates
4

3 に答える 3

3

あなたは言うことができます:

finalDates=$'{'"$valid_data_range"$'}'
于 2013-10-10T09:24:29.767 に答える
2

問題は、シェルがブレース展開を実行していることです。これにより、一連の同様の文字列を生成できます。

$ echo {a,b,c}
a b c

それはあまり印象的ではありませんが、考慮してください

$ echo a{b,c,d}e
abc ace ade

ブレースの展開を抑制するために、setコマンドを使用して一時的にオフにすることができます

$ set +B
$ echo a{b,c,d}e
a{b,c,d}e
$ set -B
$ echo a{b,c,d}e
abe ace ade
于 2013-10-10T13:51:10.383 に答える