Tôi đang cố gắng sử dụng tập lệnh sau để tạo sơ đồ trang web cho trang web của mình. Khi tôi chạy nó, sh thsitemap.sh
tôi gặp một lỗi như thế này và tạo một tệp sitemap.xml trống:
thsitemap.sh: 22: thsitemap.sh: [[: not found
thsitemap.sh: 42: thsitemap.sh: [[: not found
thsitemap.sh: 50: thsitemap.sh: Syntax error: "(" unexpected
Nhưng với cùng một người dùng root
khi tôi sao chép và dán thủ công các dòng này trên thiết bị đầu cuối, nó hoạt động mà không có bất kỳ lỗi nào và tệp sitemap.xml có tất cả các url. Có vấn đề gì vậy? Làm thế nào tôi có thể sửa lỗi này?
#!/bin/bash
##############################################
# modified version of original http://media-glass.es/ghost-sitemaps/
# for ghost.centminmod.com
# http://ghost.centminmod.com/ghost-sitemap-generator/
##############################################
url="techhamlet.com"
webroot='/home/leafh8kfns/techhamlet.com'
path="${webroot}/sitemap.xml"
user='leafh8kfns' # web server user
group='leafh8kfns' # web server group
debug='n' # disable debug mode with debug='n'
##############################################
date=`date +'%FT%k:%M:%S+00:00'`
freq="daily"
prio="0.5"
reject='.rss, .gif, .png, .jpg, .css, .js, .txt, .ico, .eot, .woff, .ttf, .svg, .txt'
##############################################
# create sitemap.xml file if it doesn't exist and give it same permissions
# as nginx server user/group
if [[ ! -f "$path" ]]; then
touch $path
chown ${user}:${group} $path
fi
# check for robots.txt defined Sitemap directive
# if doesn't exist add one
# https://support.google.com/webmasters/answer/183669
if [ -f "${webroot}/robots.txt" ]; then
SITEMAPCHECK=$(grep 'Sitemap:' ${webroot}/robots.txt)
if [ -z "$SITEMAPCHECK" ]; then
echo "Sitemap: http://${url}/sitemap.xml" >> ${webroot}/robots.txt
fi
fi
##############################################
echo "" > $path
# grab list of site urls
list=`wget -r --delete-after $url --reject=${reject} 2>&1 |grep "\-\-" |grep http | grep -v 'normalize\.css' | awk '{ print $3 }'`
if [[ "$debug" = [yY] ]]; then
echo "------------------------------------------------------"
echo "Following list of urls will be submitted to Google"
echo $list
echo "------------------------------------------------------"
fi
# put list into an array
array=($list)
echo "------------------------------------------------------"
echo ${#array[@]} "pages detected for $url"
echo "------------------------------------------------------"
# formatted properly according to
# https://support.google.com/webmasters/answer/35738
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<urlset xsi:schemaLocation=\"http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"
xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">" > $path
echo '
' >> $path;
for ((i=0;i<${#array[*]};i++)); do
echo "<url>
<loc>${array[$i]:0}</loc>
<lastmod>$date</lastmod>
<changefreq>$freq</changefreq>
<priority>$prio</priority>
</url>" >> $path
done
echo "" >> $path
echo "</urlset>" >> $path
# notify Google
# URL encode urls as per https://support.google.com/webmasters/answer/183669
if [[ "$debug" = [nN] ]]; then
wget -q --delete-after http://www.google.com/webmasters/tools/ping?sitemap=http%3A%2F%2F${url}%2Fsitemap.xml
rm -rf ${url}
else
echo "wget -q --delete-after http://www.google.com/webmasters/tools/ping?sitemap=http%3A%2F%2F${url}%2Fsitemap.xml"
echo "rm -rf ${url}"
fi
echo "------------------------------------------------------"
exit 0
bash script.sh
, gọi sh
make make bash
sang chế độ posix. Tôi nhớ loại câu hỏi này đã được trả lời. Bạn có thể tham khảo điều này: unix.stackexchange.com/questions/44836/ trên