2016-08-11 1 views
0

im gong pour compiler des formulaires Oracle sur Solaris et créer un script. le script doit vérifier si .fmx est créé puis supprime le fichier .err. ici est mon script mais j'ai reçu ci-dessous erreurErreur dans le script Bash pour vérifier le fichier existant dans Solaris

code pour supprimer les fichiers d'erreur

export FORMS_PATH=export FORMS_PATH=/apps/apps/frmcompile/cmteam/hla 
for FILE in `ls $FORMS_PATH/*.fmx`; do 

    if exist "$FILE/*.fmx"; 
    then 
     rm $FILE/err 
    fi 
done 

Une erreur se

rmerr.sh [3]: existe: non trouvé [aucun fichier ou répertoire]

+1

S'il vous plaît jeter un oeil à [édition-help] (http://stackoverflow.com/editing-help) – Cyrus

+0

S'il vous plaît un coup d'oeil. http: //www.shellcheck.net/ – Cyrus

+0

Vous devriez mieux expliquer ce que vous voulez précisément faire. Même après avoir corrigé les erreurs de programmation du shell, la logique de votre script est erronée. – jlliagre

Répondre

0

Regul ar test de fichier est effectuée à l'aide "-f"

export FORMS_PATH=export FORMS_PATH=/apps/apps/frmcompile/cmteam/hla 
for FILE in `ls $FORMS_PATH/*.fmx`; do 
    # True if file exists and is a regular file. 
    if [ -f "$FILE/*.fmx"]; then 
     rm $FILE/err 
    fi 
done 
0

Cela pourrait être ce que vous voulez faire, mais on ne sait pas où .fmx et les fichiers .err sont situés:

 
export FORMS_PATH=/apps/apps/frmcompile/cmteam/hla 
for FILE in $FORMS_PATH/*.fmx; do 
    b=$(basename $FILE) 
    [ -f "$b" ] && rm ${b%fmx}err 
done 
0

« .err » est un fichier, mais vous lister "err" ici. un autre problème ici:

  1. export FORMS_PATH = export FORMS_PATH =/apps/apps/frmcompile/cmteam/hla

    Remplacer par "FORMS_PATH =/apps/apps/frmcompile/cmteam/hla"

    1. pour FICHIER dans ls $FORMS_PATH/*.fmx; do FILE contient tous les fichiers se terminant par ".fmx"
    2. s'il existe "$ FILE/.fmx"; Résultat par exemple dans "/apps/apps/frmcompile/cmteam/hla/blaba.fmx/ .fmx" avec expansion du shell et "exister" - qu'est-ce que c'est - essayez "test" ou "[]".
    3. rm $ FILE/err Résultats dans « /apps/apps/frmcompile/cmteam/hla/blaba.fmx/err ou .err dans un sous-dossier et que vous n'aimez pas, ou?

donc mieux utiliser ceci:

#!/bin/sh  OR #!/bin/bash 
FORMS_PATH=/apps/apps/frmcompile/cmteam/hla 

for fmx in $FORMS_PATH/*.fmx; do 

    # remove your files ending in .err instead of .fmx 
    /bin/rm "${fmx%.fmx}.err # only valid with bash 

done 

Tom