フォルダのファイル名を取得し、自分のホームページにそのファイル名へのHTMLリンクを作成するスクリプトがあります。スクリプトは次のとおりです。
#!/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
しかし、コードが送信されたことを確認しましたが、var/www/index.html
変数はまだ置き換えられていません。この問題を解決する方法に関する提案はありますか?
答え1
'
一重引用符と二重引用符の両方が存在する理由があります"
。パラメータは二重引用符内では拡張されますが、一重引用符内では拡張されません。
echo "<a href=\"/path/to/dir/$i\">$i</a>" >> /var/www/index.html
答え2
問題は、変数を一重引用符で囲んだことです。一重引用符で囲まれた場合、変数はリテラルとして扱われます。二重引用符に変更してみてください。
「エコ…」の周囲のチェックマークも削除する必要があります。これらのサブシェルを実行すると、次のエラーが発生します。
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
このスクリプトは必要なタスクを実行します。
#!/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