1

次の呼び出しを使用してsed、行ファイルを削除しています。

sed "/% Program:/,/mode: SPIKE/d" file.tt > file.tt.nh

一度に多くのファイルでスクリプトを実行できるように、bash スクリプトを作成してみました。しかしsed、失敗します。

sed "/% Program:/,/mode: SPIKE/d" file.tt > file.tt.nh
sed: -e expression #1, char 1: unknown command: `"'

これは私が書いたスクリプトで、動作していません

#!/bin/bash
SEDARG='"/% Program:/,/mode: SPIKE/d"';
for F in *.tt
do
  OUT=$F'.nh';
  echo 'sed '$SEDARG' '$F' > '$OUT;
  sed $SEDARG $F > $OUT
done

困惑するのは、エコーされた文字列をコピーしてコマンドラインに貼り付けると、正常に機能することです。

このスクリプトが失敗する理由を知っている人はいますが、コマンドライン呼び出しは機能しますか?

4

1 に答える 1

4

引用はむずかしい。基本的に、二重引用符を割り当て先から使用$SEDARGする場所に移動します。 $SEDARG

SEDARG='/% Program:/,/mode: SPIKE/d'
for F in *.tt
do
  OUT="$F.nh"
  echo "sed $SEDARG $F > $OUT"
  sed "$SEDARG" "$F" > "$OUT"
done
于 2012-09-14T20:00:43.973 に答える