1

私はbashについても同様の答えを見つけましたが、shについてはそうではなかったので、私は尋ねています。

「Jun01Jun02Jun03Jun04」のようなものを含む$STRINGがあります。これを、$ {ARRAY [0]}が「Jun01」、${ARRAY[1]}が「Jun02」などの配列に入れたいと思います。

これどうやってするの?ありがとうございました。

4

3 に答える 3

2

標準(Bourne)シェルで配列をネイティブに処理することはできません。

詳細については、こちらをご覧ください。

Cシェル(47.5)、awk(33.11)、Kornシェル、およびその他のUNIXコマンドインタープリターには、配列サポートが組み込まれています。標準のBourneシェルはそうではありませんが、そのコマンドラインはset(44.19)コマンドで格納できる一種の配列であり、$ 1、$2などを介して格納された値を取得します。

私はbash(あなたが特定したように)またはPerlのようなより完全な機能を備えたスクリプト言語を使用しようとします(間違いなく他の人が彼らのお気に入りを提案するでしょう!)

于 2012-07-10T17:01:32.210 に答える
1

shには配列がありませんが、多くの場合、次のハックで十分です。

set $STRING
for x; do eval "ARRAY_$((i++))='$x'"; done

さて、(i最初は設定されていないか0であると仮定して)、$ARRAY_0値はJun01、、などです。$ARRAY_1Jun02

于 2012-07-10T17:32:06.970 に答える
1

あなたは位置パラメータで逃げることができます:それらは配列のようなものです。

set -- $STRING   # no quotes here
echo $1
echo $2
# etc
于 2012-07-11T00:55:36.247 に答える