0

このシェルスクリプトを使用していますが、奇妙なエラーが発生し続けます。そのうちの 1 つは、対処が必要です。もう 1 つは、config.txt が見つからないということですが、.sh スクリプトを含むディレクトリにあります。

エラー出力は次のとおりです。

jmgreen@jdev:~/citigetbash$ sh citiget.sh
: not found 2: clear
CITIGET
config.txt: No such file or directory

citiget.sh: 17: Syntax error: word unexpected (expecting "do")

ディレクトリの LS は次のとおりです。

jmgreen@jdev:~/citigetbash$ ls
citiget.sh  config.txt  docs

ここに私のシェルスクリプトがあります

#!/bin/bash
clear
strTitle="CITIGET"
echo $strTitle
#=====CONFIGURATION=============================================================
strLocalDir="/home/jmgreen/citigetbash/"
intMode=1
intTry=5
#===============================================================================
#
# ===== Read in all the URLs
strDir=$(pwd)
URLS=$(cat $strLocalDir"config.txt")
echo $URLS
# ===== Get the file 
if [ $intMode = 1 ]; then
    for u in $URLS;
        do 
            # ===== Get the datestamp ready
            ts=$(date +%Y%m%d%H%M%S);
            echo "Trying..."$u
            wget $u --no-check-certificate -t$intTry -a logfile.txt -O $strLocalDir"downloaded/"$ts".csv";
    done
else
    for u in $URLS;
        do 
            # ===== Get the datestamp ready
            ts=$(date +%Y%m%d%H%M%S);
            wget $u -q --no-check-certificate -t$intTry -a logfile.txt -O $strLocalDir"downloaded/"$ts".csv";
    done
fi
# ===== Clear Screen?
if [ $intMode = 1 ]; then
    clear
fi
echo "===== DONE ====="
exit
4

1 に答える 1

1

まず、に置き換えcat $strLocalDir"config.txt"ますcat "${strLocalDir}config.txt"

次に、config.txt の内容を確認します。これは $URLS 変数に移動されますが、形式が正しくない可能性があります。

このような問題が発生した場合は、print などのデバッグ ステートメントを挿入してみてください。変数が必要になるたびに変数の値をテストすると、コードがどこで失敗するかをより正確に知ることができます。

于 2012-10-30T15:38:05.540 に答える