2 votes

Modification d'un argument de ligne de commande pour créer une nouvelle variable

J'ai un bash script appelé test.sh qui utilise un argument de ligne de commande :

lynx -dump $1 > $name".txt"

Mais j'ai besoin que le nom soit créé à partir de l'argument par des mots-clés spécifiques dans l'argument.

Un exemple :

http://www.pcmag.com/article2/0,2817,2412941,00.asp
http://www.pcmag.com/article2/0,2817,2412919,00.asp

Il s'agit de deux articles distincts, mais la différence ne se voit que dans ces 12 caractères. Comment créer une variable à partir d'une url pour ces 12 caractères ? De sorte que lorsque je lance test.sh dans le Terminal :

./test.sh http://www.pcmag.com/article2/0,2817,2412941,00.asp 

il y a un fichier texte enregistré comme 0,2817,2412941,00 ?

1voto

Guru Points 699

Vous pouvez le faire en awk comme ceci :

$ name=$(echo $1 | awk -F[/.] '{print $(NF-1)}')
$ echo $name
0,2817,2412941,00

En utilisant / y . comme délimiteurs, les éléments que vous voulez seront présents dans l'avant-dernier champ, auquel on peut accéder en utilisant la fonction NF-1

1voto

Vrolijk Points 1

Vous pouvez utiliser le basename commandement :

basename http://www.pcmag.com/article2/0,2817,2412919,00.asp ".asp"

qui vous donnera :

0,2817,2412919,00

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X