# transferer le contenu d'un fichier dans une variable



## romac (26 Décembre 2006)

Comment transferer le contenu d'un fichier dans une variable ?
un fichier s'appelle : essai
il contient : il fait beau
j'aimerai le recuperer dans une variable , comment faire .

merci beaucoup


----------



## p4bl0 (26 Décembre 2006)

romac a dit:


> Comment transferer le contenu d'un fichier dans une variable ?
> un fichier s'appelle : essai
> il contient : il fait beau
> j'aimerai le recuperer dans une variable , comment faire .
> ...


heu, comment dire... tu veux une r&#233;ponse je suppose... bon alors voil&#224; :

En quel langage ? (c'est le strict minimum pour qu'on puisse t'aider )

:rateau:


----------



## romac (26 Décembre 2006)

p4bl0 a dit:


> heu, comment dire... tu veux une réponse je suppose... bon alors voilà :
> 
> En quel langage ? (c'est le strict minimum pour qu'on puisse t'aider )
> 
> :rateau:



scusez moi , en unix merci .


----------



## tatouille (26 Décembre 2006)

romac a dit:


> scusez moi , en unix merci .



c'est quoi en unix ?:rateau: ( Uniplexed Operating and Computing System : UNICS -> UNIX )

sinon en bash ( bourne again shell )  :

```
hostname:~ username$ export myfilecontent=`cat /etc/motd`
hostname:~ username$ echo $myfilecontent
```
en utilisant d'autres cmds ...


```
hostname:~ username$ php -r "echo readfile('/etc/motd');"
hostname:~ username$ echo "\$file = '/etc/motd'; open(INFO, \$file);@lines = <INFO>;close(INFO);print @lines;" > /tmp/p.pl
hostname:~ username$ perl /tmp/p.pl
```


----------



## romac (27 Décembre 2006)

j'écrit comme vous et pourtant

export ess='cat ~/start_base/variablev_que_faire'
echo $esscat 
et l'ordi repond :
cat ~/start_base/variablev_que_faire

alors qu'il y a toto dans : variablev_que_faire


----------



## tatouille (27 Décembre 2006)

romac a dit:


> j'&#233;crit comme vous et pourtant
> 
> export ess='cat ~/start_base/variablev_que_faire'
> echo $esscat
> ...



non ce n'est pas ce que j'ai marqu&#233;

de plus


```
hostname:~ username$ env
```


```
hostname:~ username$ touch $HOME/myfile
 hostname:~ username$ echo "Hello World" > $HOME/myfile
 hostname:~ username$ export f=`cat $HOME/myfile`
 hostname:~ username$ echo $f
 hostname:~ username$ rm -f $HOME/myfile
```


ou variante pour lourdo
pour te montrer que les simples qualifiers ce n'est pas vraiment ce que j'ai utilis&#233;


```
hostname:~ username$ touch $HOME/myfile
 hostname:~ username$ echo "Hello World" > $HOME/myfile
 hostname:~ username$ export f=$(cat $HOME/myfile)
 hostname:~ username$ echo $f
 hostname:~ username$ rm -f $HOME/myfile
```


----------



## p4bl0 (27 Décembre 2006)

romac a dit:


> j'écrit comme vous et pourtant
> 
> export ess='cat ~/start_base/variablev_que_faire'
> echo $esscat
> ...


Ce que tatouille veut t'expliquer c'est qu'il faut bien lire (et comprendre) avant de dire que &#231;a marche pas :

tu utilises des simplequotes alors qu'il utilise des accents graves (*`* et pas *'*)
Et ce qui est entre ces accents graves est interpr&#233;t&#233; alors qu'entre les apostrophes (simple quote) c'est une simple cha&#238;ne de caract&#232;re.

l'autre m&#233;thode (mais celle l&#224; &#231;a ne marche que dans un shell je pense) c'est entre *$(* et *)* comme &#231;a c'est direct dans une variable utilisable dans un shell script.
Mais je trouve &#231;a moins propore et apparemment tatouille est d'accord (_pour lourdo_)


----------



## FjRond (27 Décembre 2006)

tatouille a dit:


> non ce n'est pas ce que j'ai marqué


Voilà pourquoi je préfère la syntaxe :

```
$ export myfilecontent=$(cat /etc/motd)
```


----------



## p4bl0 (27 Décembre 2006)

FjRond a dit:


> Voilà pourquoi je préfère la syntaxe :
> 
> ```
> $ export myfilecontent=$(cat /etc/motd)
> ```


Parce que tu sais pas lire ? 


_ne pas le rpendre mal :rateau:_


----------



## FjRond (27 Décembre 2006)

p4bl0 a dit:


> Parce que tu sais pas lire ?
> 
> 
> _ne pas le rpendre mal :rateau:_


Dans un script un peu complexe, on a vite fait de confondre ` avec ', c'est tout. $(), c'est plus lisible.


----------



## bompi (28 Décembre 2006)

D'accord avec FjRond sur ce point de lisibilit&#233;.
En g&#233;n&#233;ral, n'&#233;tant pas un hacker et n'&#233;tant pas tr&#232;s malin, je pr&#233;f&#232;re &#233;crire mes scripts (ou mes programmes) de la fa&#231;on la plus lisible possible, de sorte que _m&#234;me moi_ j'arrive &#224; me relire ...


----------



## p4bl0 (28 Décembre 2006)

bompi a dit:


> D'accord avec FjRond sur ce point de lisibilit&#233;.
> En g&#233;n&#233;ral, n'&#233;tant pas un hacker et n'&#233;tant pas tr&#232;s malin, je pr&#233;f&#232;re &#233;crire mes scripts (ou mes programmes) de la fa&#231;on la plus lisible possible, de sorte que _m&#234;me moi_ j'arrive &#224; me relire ...


Moi je pr&#233;f&#232;re la m&#233;thode avec *`* parce qu'on la retrouve en PHP, qui est le premier langage que j'ai appris. 

Et &#231;a se retrouve dans d'autre langage aussi, comme Perl par exemple 


Enfin du moment qu'il y a de quoi contenter tout le monde


----------



## tatouille (29 Décembre 2006)

```
getInterfaces=`ifconfig -lu`

echo " "

for Interface in $getInterfaces; do

    getInet=`ifconfig $Interface | sed -n -e "s/^.*inet //g" -n -e "s/ netmask.*//p"`
    getEther=`ifconfig $Interface | sed -n -e "s/^.*ether //p"`
    getmtu=`ifconfig $Interface | sed -n -e "s/^.*mtu //p"`

    echo "interface" $Interface
        
    for inet in $getInet; do
        getBcast=`ifconfig $Interface | sed -n -e "s/^.*$inet.*.broadcast//p"`
        
        if [ "${inet}" != "-->" ]; then
            echo "    inet" $inet
            
            if [ "${getBcast}" != "" ]; then
                echo "    broadcast" $getBcast
            fi
        fi
        
    done
            
    if [ "${getEther}" != "" ]; then
        echo "    mac" $getEther

    fi
    
    if [ "${getmtu}" != "" ]; then
        echo "    mtu" $getmtu

    fi
            
    echo " "
            
done

exit
```


```
md5=$(echo $(openssl md5 $1 2>/dev/null) | cut -d'=' -f2) 

echo ${md5&#37;%' '} $1
```


----------



## bompi (29 Décembre 2006)

Note que je ne conteste pas l'int&#233;r&#234;t de la d&#233;monstration ... mais quel est le but  ? 
Montrer les deux mani&#232;res d'ex&#233;cuter une commande &#224; l'int&#233;rieur d'une autre ?


----------



## tatouille (29 Décembre 2006)

oui entre autre  

1 -je veux juste montrer pour ceux qui veulent tester que parfois tu dois mixer
les deux pour t'en sortir
2 - ca reste lisible
3 - `exp` est une syntax tres commune en prog et en C c'est incontournable


----------



## p4bl0 (29 Décembre 2006)

tatouille a dit:
			
		

> ```
> md5=[B]$([/B]echo [B]$([/B]openssl md5 $1 2>/dev/null[B])[/B] | cut -d'=' -f2[B])[/B]
> 
> echo ${md5&#37;%' '} $1
> ```


moi je savais pas qu'on pouvais imbriquer c'est truc &#231;a c'est cool


----------



## FjRond (29 Décembre 2006)

tatouille a dit:


> oui entre autre
> 3 - `exp` est une syntax tres commune en prog et en C c'est incontournable



N'oubliez pas tout de m&#234;me que tous les usagers du shell ne sont pas des programmateurs. De _C_, point n'ai besoin (personnellement).
D'autre part, m&#234;me si ce n'est pas parole d'&#233;vangile (dans ce domaine, il me semble que le dogmatisme ne soit pas de mise), Ch. Blaess (qui a coordonn&#233; la traduction des man en fran&#231;ais), dans son livre sur les scripts sous Linux, tient tient la syntaxe &#171; ``&#187; pour obsol&#232;te.


----------



## bompi (29 Décembre 2006)

Disons qu'il faut garder &#224; l'esprit le _motto_ de PERL : "[SIZE=-1]There's *more* than one *way to do it*."

Un point m'&#233;tonne : quand donc utilises-tu "`" en C  
[/SIZE]


----------

