著者: Marc TERRIER日付: 2018-06-26 14:46 UTC To: anne guildeCC: ML Guilde題目: 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