1

シェルスクリプトを学んでいますが、このエラーを解決できません。助けていただければ幸いです。

#!/bin/sh
LOCATION=/tmp/loc
PROXY=http://wwwproxy.unimelb.edu.au:8000

http_proxy=$PROXY; export http_proxy
echo "Installing into" $LOCATION

if [ ! -d $LOCATION ]; then mkdir $LOCATION; fi
if [ ! -d $LOCATION/packages ]; then mkdir $LOCATION/packages; fi

TOMCAT_FILE=apache-tomcat-6.0.24.tar.gz
if [ ! -e $LOCATION/packages/$TOMCAT_FILE ]; then
    echo "Downloading" $TOMCAT_FILE
    wget http://mirror.olnevhost.net/pub/apache/tomcat/tomcat-6/v6.0.24/bin/apache-tomcat-6.0.24.tar.gz -O $LOCATION/packages/$TOMCAT_FILE
else
    echo "Found" $TOMCAT_FILE
fi

3 番目の if ステートメントで次のエラーで失敗しているようです。

bash-3.00$ ./install.sh 
Installing into /tmp/loc
./install.sh: test: argument expected

(そして、これを行う方法をよく知っていると思う人のために、外部の要件のために、これを処理するスクリプトを実際に作成する必要があります)

4

3 に答える 3

2

別の書き方

if [ ! -d $LOCATION ]; then mkdir $LOCATION; fi

[ -d $LOCATION ] || mkdir $LOCATION
于 2010-02-04T14:47:55.630 に答える
2

/bin/shスクリプトは他の人でも機能するため、ボーンアゲインシェルを指していないと思います(質問のコメントを参照)。

shebang は/bin/bashbourne-again シェル スクリプト用である必要が/bin/shありますが、symlink を持つ一部のディストリビューション (Debian など) で動作します/bin/sh -> /bin/bash

于 2010-02-04T07:06:16.840 に答える
2

shがbashにエイリアスされていない限り、シバンを次のように変更してみてください#!/bin/bash

于 2010-02-04T07:07:05.880 に答える