我如何将 1 美元传递给 sed?

我如何将 1 美元传递给 sed?

我正在使用以下代码来尝试清理一些 html 文件。$1应该是一个目录的名称。这在命令行中工作得很好,并且对目录中的文件进行了请求的更改。在这两种情况下echo都会显示$directory,但是当从 bash 脚本使用时,指定目录中不会发生任何更改。为什么?我该如何解决?

#!/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

相关内容