sedに$ 1をどのように渡しますか? [閉鎖]

sedに$ 1をどのように渡しますか? [閉鎖]

いくつかのHTMLファイルを試してクリーンアップするには、次のコードを使用しています。$1ディレクトリ名でなければなりません。これはコマンドラインでうまく機能し、要求どおりにディレクトリ内のファイルを変更します。どちらの場合もecho表示されますが、$directorybashスクリプトで使用すると、指定されたディレクトリに変更は発生しません。なぜ?どうすれば解決できますか?

#!/bin/bash
directory=$1
echo $directory
LC_CTYPE=C
sed -i.clean -f uncap-html.sed $directory/*.html
echo DONE

ベストアンサー1

同じスクリプトを使用したときになぜ失敗したのかわかりません。期待どおりに動作します。

sed.sh

  1 #!/bin/bash
  2 directory=$1
  3 echo $directory
  4 LC_CTYPE=C
  5 sed -i.clean -f uncap-html.sed $directory/*.html
  6 echo DONE

uncap-html.sed

[gc13@oc1245342277 sh]$ cat uncap-html.sed 
s/z/o/g
[gc13@oc1245342277 sh]$ 

1.html

Hello

2.html

World

実装する

[gc13@oc1245342277 sh]$ cat *.html
Hellz
Wzrld
[gc13@oc1245342277 sh]$ 

他のアプローチを試してみることもできます。

#!/bin/bash
FILES="$1/*.html"
echo $FILES
LC_CTYPE=C
sed -i.clean -f uncap-html.sed $FILES
echo DONE

おすすめ記事