这个bash脚本实际上做了什么?

时间:2012-11-18 22:22:49

标签: bash shell solr wget

#!/bin/bash

# Setup Variables
hostName=localhost
portNum=8080
SOLRPATH=/solr
SOLR='delta-import&clean=false'
STATUS='dataimport?command=status'
urlCmd='http://${hostName}:${portNum}${SOLRPATH}/dataimport?command=${SOLRCMD}"
statusCmd='http://${hostName}:${portNum}${SOLRPATH}/dataimport?command=${STATUS}"
myStdErrLog=/tmp/myProject/myProg.stderr.$(/bin/date +%Y%m%d.%H%M)
outputDir=. 

# Operations
wget -O $outputDir/check_status_update_index.txt ${statusCmd} 2> ${myStdErrLog}
status=$(fgrep idle $outputDir/check_status_update_index.txt) 
case "${status}" in 
    *idle* ) .... ;; 
    * ) echo "unknown status = ${status} or similar" 1>&2 ;; 
 esac

我真正理解的是,我们从varialbes中获得了urlcmd和statuscmd,但我不明白操作的作用。任何人都能解释一下吗?

2 个答案:

答案 0 :(得分:2)

首先,行中存在错误

urlCmd='..."
statusCmd='..."

由于它们以双引号结尾并包含变量,因此它们也需要以双引号开头。

从不使用变量urlCmd。不是一个错误,但它也不好。

wget通过statusCmdfgrep尝试检索状态以提取状态。然后在case语句中评估此状态。

答案 1 :(得分:1)

通常,它看起来像是尝试从网站下载数据并将管道状态下载到myStdErrLog。