sedは変数で置き換えます

sedは変数で置き換えます

文字列から最初のn文字を削除しようとしていますが、次のエラーが発生します。

line 5: ${ echo $data | sed -r 's/.{ $index0 }//' }: bad substitution

Bashスクリプトでこのコードを使用する場合:

data=${ echo $data | sed -r 's/.{$index}//' }

修正がありますか?

ベストアンサー1

素晴らしい、

  1. コマンドの置換はであり$( ... )、そうではありません${ ... }。中かっこではなく一般括弧です。
  2. $index一重引用符があるのでいいえシェルに拡張されました。これを行うには、二重引用符を入れる必要があります。
  3. $dataエコーに二重引用符を追加すると、dataスペースやグローバル文字が含まれている場合に違いが発生します。
  4. Bashでは、部分文字列拡張を使用してdata=${data:$index}文字列の前にある文字を削除できます。

おすすめの本:http://mywiki.wooledge.org/BashGuide

おすすめ記事