Programmation bash / script bash

Résolu
bonjour j'ai un souci avec un petit script bash que j'ai fait:
tout d'abord j'ai un fichier try qui contient

//192.168.1.1/binaire; date 1 ; date 2
132.456.555.555:/toto; date 1; date 2
//123.456.789/voila; date 1; date 2
124.765.677.677:/commeca; date 1 ; date 2

les partages cifs sont sous la forme //xxx.xxx.xxx/partage ceux nfs sont xxx.xxx.xxx:/partage

j'ai écrit un code qui me permet de vérifier s il est cifs ou nfs
#!/bin/bash

i=0
while read line
do
i='expr $i + 1'
var=$(awk -F ";" 'NR=='$i' {print $1;}' try | awk -F ":" '{print $2;}')

#dans la variable j'ai le partage rien quand il est cifs et nimporte quoi quand il est nfs

if [ var != " " ] # je controle si la variable est différent de vide
then
echo "partage nfs"
break
else # dans le cas contraire

echo "partage cifs"
fi
done<try

mias je n'obtiens rien quelqu'un pourrait m'aider merci cdtsl Dmouha

4 réponses

  1. Modérateur
    Salut,

    Et comme ça, ce n'est pas plus simple :

    jp@MDK:~/tmpfs ssh$ cat try
    //192.168.1.1/binaire; date 1 ; date 2
    132.456.555.555:/toto; date 1; date 2
    //123.456.789/voila; date 1; date 2
    124.765.677.677:/commeca; date 1 ; date 2
    
    jp@MDK:~/tmpfs ssh$ cat foo.sh
    #! /bin/sh
    
    #set -xv
    
    while read line
    do
    grep -q '^/' <<<${line}
    if [ "$?" = 0 ]
    then
    var=$(awk -F '[/;]' '{ print $4 }' <<<${line})
    echo "${var} = Partage CIF"
    else
    var=$(awk -F '[/;]' '{ print $2 }' <<<${line})
    echo "${var} = Paratge NFS"
    fi
    done < try
    
    jp@MDK:~/tmpfs ssh$ ./foo.sh
    binaire = Partage CIF
    toto = Paratge NFS
    voila = Partage CIF
    commeca = Paratge NFS
    
    jp@MDK:~/tmpfs ssh$

    ;-))
    1. mais j'aurai besoin de toute la ligne pas seleument du share par exemple

      on aurait au final mount -cifs //192.168.1.1/binaire quand c est un cifs et
      mount -nfs 132.456.555.555:/toto car je dois monter les partages
      merci je vais chercher de mon coté aussi!
      1. Modérateur
        Essaie comme ça alors :

        jp@MDK:~/tmpfs ssh$ cat foo.sh
        #! /bin/sh
        
        #set -xv
        
        while read line
        do
        grep -q '^/' <<<${line}
        if [ "$?" = 0 ]
        then
        echo "mount -cifs ${line%%;*}"
        else
        echo "mount -nfs ${line%%;*}"
        fi
        done < try
        
        jp@MDK:~/tmpfs ssh$ ./foo.sh
        mount -cifs //192.168.1.1/binaire
        mount -nfs 132.456.555.555:/toto
        mount -cifs //123.456.789/voila
        mount -nfs 124.765.677.677:/commeca
        
        jp@MDK:~/tmpfs ssh$

        ;-))
        1. c est bon j'ai trouver il fallait juste affecté les variables merci pour l'aide