Como faço para passar $ 1 para sed? [fechadas]

2

Estou usando o seguinte código para tentar limpar alguns arquivos html. $1 deve ser o nome de um diretório. Isso funciona bem na linha de comando e as alterações solicitadas são feitas nos arquivos no diretório. echo exibe o $directory em ambos os casos, no entanto, nada é alterado no diretório especificado quando usado a partir do script bash. Por quê? Como faço para corrigir isso?

#!/bin/bash
directory=$1
echo $directory
LC_CTYPE=C
sed -i.clean -f uncap-html.sed $directory/*.html
echo DONE
    
por kovach.j 13.02.2017 / 20:53

1 resposta

1

Não sei ao certo por que está falhando quando o mesmo script funciona como esperado para mim.

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

Execução

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

Você pode tentar outra abordagem:

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