Existe uma razão pela qual ambas aspas simples '
e aspas duplas "
existem. Os parâmetros são expandidos entre aspas duplas, mas não entre aspas simples.
echo "<a href=\"/path/to/dir/$i\">$i</a>" >> /var/www/index.html
Eu tenho um script que obtém os nomes dos arquivos em uma pasta e cria um link HTML para eles na minha página inicial. Aqui está o script:
#!/bin/bash
list_dir='ls -t /path/to/dir/'
for i in $list_dir
do
echo ''<a href="/path/to/dir/$i">$i</a>' >> /var/www/index.html'
done
Mas quando eu verifico o var/www/index.html
, o código é enviado, mas as variáveis não foram substituídas.
Algum conselho sobre como consertar isso?
O problema é que você tem aspas simples envolvendo as variáveis. Suas variáveis são consideradas literais quando agrupadas por aspas simples. Tente trocá-los por aspas duplas.
Você também precisa remover os carrapatos em volta do "echo ...". Esses exec uma sub-shell que lhe dá este erro:
a: line 5: <a href="/path/to/dir/file1">file1</a>: No such file or directory
a: line 5: <a href="/path/to/dir/file2">file2</a>: No such file or directory
Este script faz o que você precisa:
#!/bin/bash
list_dir='ls -t /path/to/dir/'
for i in $list_dir
do
echo "<a href=\"/path/to/dir/$i\">$i</a>" >> /var/www/index.html
done