Re: changer une ligne d'un script bash

Startseite

Nachricht beantworten
Autor: Marc TERRIER
Datum:  
To: anne guilde
CC: ML Guilde
Betreff: Re: changer une ligne d'un script bash
Bonjour,

Dans une commande sed, tu peux utiliser une variable shell : il suffit de la mettre entre simples quotes pour "sortir" temporairement de sed, puis y revenir tout de suite après :

$ toto="ir"
$ echo "pouette" | sed 's/pou/p'$toto'ou/'
pirouette

OK ?

Marc

----- Mail original -----
De: "anne guilde" <anne.guilde@???>
À: "ML Guilde" <guilde@???>
Envoyé: Mardi 26 Juin 2018 14:47:48
Objet: changer une ligne d'un script bash

bonjour,

Dans un script bash j'ai 2 variables importantes :

UUID et BUS_USB


UUID='2a5429e8-d3bc-4f1f-9416-821cd1ec72b7' ; \
echo "uuid : $UUID"; \
DEV_NAME=$(blkid -U $UUID); \
echo "dev_name : $DEV_NAME"; \
DEV_NAME1="/dev/$(basename $(dirname $(readlink
\/sys/class/block/$(basename $DEV_NAME))))"; \
echo "dev_name1 : $DEV_NAME1"; \
DEVICE1=$(udevadm info --query=path --name=${DEV_NAME1} --attribute-walk
| egrep "looking at parent device" | head -1 | sed -e "s/.*looking at

parent device '\(\/devices\/.*\)\/.*\/host.*/\1/g"); \
echo "device1 : $DEVICE1"; \
DEV_BUS_ID=${DEVICE1##*/}; \
echo "dev_bus_id : $DEV_BUS_ID"

=>

# UUID='2a5429e8-d3bc-4f1f-9416-821cd1ec72b7'; \
> echo "uuid : $UUID"; \
> DEV_NAME=$(blkid -U $UUID); \
> echo "dev_name : $DEV_NAME"; \
> DEV_NAME1="/dev/$(basename $(dirname $(readlink

\/sys/class/block/$(basename $DEV_NAME))))"; \
> echo "dev_name1 : $DEV_NAME1"; \
> DEVICE1=$(udevadm info --query=path --name=${DEV_NAME1}

--attribute-walk | egrep "looking at parent device" | head -1 | sed -e
"s/.*looking at parent device '\(\/devices\/.*\)\/.*\/host.*/\1/g"); \
> echo "device1 : $DEVICE1"; \
> DEV_BUS_ID=${DEVICE1##*/}; \
> echo "dev_bus_id : $DEV_BUS_ID"

uuid : 2a5429e8-d3bc-4f1f-9416-821cd1ec72b7
dev_name : /dev/sdc1
dev_name1 : /dev/sdc
device1 : /devices/pci0000:00/0000:00:14.0/usb2/2-3
dev_bus_id : 2-3

Pour l'UUID pas de souci, par contre le DEV_BUS_ID change de temps en
temps au reboot du pc selon ce qui est branché en usb ou ...

J'ai plusieurs script qui ont la ligne
BUS_USB="3-1"
et que j'aimerais changer en automatique avec le commande que j'ai donné
ci-dessus

J'ai commencé de faire un script

----
#!/bin/bash

# set -x

UUID='2a5429e8-d3bc-4f1f-9416-821cd1ec72b7'
echo "uuid : $UUID"

DEV_NAME=$(blkid -U $UUID)
echo "dev_name : $DEV_NAME"

DEV_NAME1="/dev/$(basename $(dirname $(readlink
\/sys/class/block/$(basename $DEV_NAME))))"
echo "dev_name1 : $DEV_NAME1"

DEVICE1=$(udevadm info --query=path --name=${DEV_NAME1} --attribute-walk
| egrep "looking at parent device" | head -1 | sed -e "s/.*looking at

parent device '\(\/devices\/.*\)\/.*\/host.*/\1/g")
echo "device1 : $DEVICE1"

DEV_BUS_ID=${DEVICE1##*/}
echo "dev_bus_id : $DEV_BUS_ID"
----

Comment faire pour changer en automatique dans les scripts la ligne
BUS_USB="3-1", le 3.1 avec le $DEV_BUS_ID que j'ai trouvé.

Avec sed?
Mais avec quelle commande exactement?

Merci
Anne