{"id":2233,"date":"2019-08-20T08:58:11","date_gmt":"2019-08-20T06:58:11","guid":{"rendered":"http:\/\/les-fougs.com\/wordpress\/?p=2233"},"modified":"2019-08-20T14:04:12","modified_gmt":"2019-08-20T12:04:12","slug":"manipulation-de-chaine-de-caracteres-linux","status":"publish","type":"post","link":"http:\/\/les-fougs.com\/wordpress\/2019\/08\/20\/manipulation-de-chaine-de-caracteres-linux\/","title":{"rendered":"Manipulation de cha\u00eene de caract\u00e8res Linux"},"content":{"rendered":"<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">Assigner et afficher une variable<\/h3>\n<\/div>\n<\/div>\n<\/div>\n<p>En BASH, une variable est identifi\u00e9e par l&rsquo;usage du &lsquo;$&rsquo;, sauf pour lui attribuer une valeur o\u00f9 l&rsquo;on omet le &lsquo;$&rsquo;.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-comment\">#assignation de la variable<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>maVariable=<span class=\"hljs-string\">'Ceci est une chaine de caract\u00e8res'<\/span>\r\n    \r\n<span class=\"hljs-comment\">#utilisation de la variable<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">$mavariable<\/span>\r\n<span class=\"hljs-constant\">Ceci<\/span> est une chaine de caract\u00e8res<\/pre>\n<p>Il est \u00e9galement possible d&rsquo;utiliser une syntaxe plus explicite qui permet de d\u00e9limiter clairement quel est le nom de la variable et d&rsquo;\u00e9viter donc plus facilement des erreurs de nommage.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>file=<span class=\"hljs-string\">'homework'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>ls \/mnt\/data\/<span class=\"hljs-variable\">$file_save<\/span>.doc<\/pre>\n<p>Dans cet exemple la variable utilis\u00e9e est &lsquo;file_save&rsquo; et non &lsquo;file&rsquo;. Le r\u00e9sultat ne sera donc absolument pas celui qu&rsquo;on attend !<\/p>\n<p>Une fa\u00e7on de d\u00e9limiter clairement le nom de la variable est d&rsquo;utiliser les crochets &lsquo;{}&rsquo;.<\/p>\n<pre class=\"programlisting hljs ruby\">    <span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>file=<span class=\"hljs-string\">'homework'<\/span>\r\n    <span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>ls \/mnt\/data\/<span class=\"hljs-variable\">${<\/span>file}_save.doc<\/pre>\n<p>La variable utilis\u00e9e ici sera &lsquo;file&rsquo; et a pour valeur &lsquo;homework&rsquo;. Ce qui donne donc la commande suivante une fois la variable substitu\u00e9e.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>ls \/mnt\/data\/homework_save.doc<\/pre>\n<p>C&rsquo;est cette syntaxe qui sera utilis\u00e9e tout au long de cet article.<\/p>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">Modifier la casse<\/h3>\n<\/div>\n<\/div>\n<\/div>\n<p>Un des traitements les plus courants est de modifier la casse, que cela soit de passer tout en majuscule, ou en minuscule.<\/p>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Tout passer en minuscule<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Le changement de la casse en minuscule se fait \u00e0 l&rsquo;aide de &lsquo;,,&rsquo; comme ceci :<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>test=<span class=\"hljs-string\">\"Hello World !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">${<\/span>test,,}\r\nhello world !<\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Tout passer en majuscule<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Le changement de la casse en majuscule se fait \u00e0 l&rsquo;aide de &lsquo;^^&rsquo; comme ceci :<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>test=<span class=\"hljs-string\">\"Hello World !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">${<\/span>test^^}\r\n<span class=\"hljs-constant\">HELLO<\/span> <span class=\"hljs-constant\">WORLD<\/span> !<\/pre>\n<\/div>\n<p>Ainsi un &lsquo;case&rsquo; comme celui-ci<\/p>\n<pre class=\"programlisting hljs bash\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-variable\">${userInput}<\/span> <span class=\"hljs-keyword\">in<\/span>\r\n    <span class=\"hljs-string\">\"oui\"<\/span>|<span class=\"hljs-string\">\"Oui\"<\/span>|<span class=\"hljs-string\">\"OUI\"<\/span>|<span class=\"hljs-string\">\"O\"<\/span>|<span class=\"hljs-string\">\"o\"<\/span>|<span class=\"hljs-string\">\"YES\"<\/span>|<span class=\"hljs-string\">\"Yes\"<\/span>|<span class=\"hljs-string\">\"yes\"<\/span>|<span class=\"hljs-string\">\"Y\"<\/span>|y<span class=\"hljs-string\">\")\r\n        # action si l'utilisateur r\u00e9pond oui\r\n        ;;\r\n    \"<\/span>non<span class=\"hljs-string\">\"|\"<\/span>Non<span class=\"hljs-string\">\"|\"<\/span>NON<span class=\"hljs-string\">\"|\"<\/span>NO|<span class=\"hljs-string\">\"No\"<\/span>|<span class=\"hljs-string\">\"no\"<\/span>|<span class=\"hljs-string\">\"N\"<\/span>|<span class=\"hljs-string\">\"n\"<\/span>)\r\n        <span class=\"hljs-comment\"># action si l'utilisateur r\u00e9pond non<\/span>\r\n        ;;\r\n<span class=\"hljs-keyword\">esac<\/span>\r\n<\/pre>\n<p>devient simplement :<\/p>\n<pre class=\"programlisting hljs bash\"><span class=\"hljs-keyword\">case<\/span> <span class=\"hljs-variable\">${userInput,,}<\/span> <span class=\"hljs-keyword\">in<\/span>\r\n    <span class=\"hljs-string\">\"oui\"<\/span>|<span class=\"hljs-string\">\"yes\"<\/span>|<span class=\"hljs-string\">\"y\"<\/span>|<span class=\"hljs-string\">\"o\"<\/span>)\r\n        <span class=\"hljs-comment\"># action si l'utilisateur r\u00e9pond oui<\/span>\r\n    ;;\r\n    <span class=\"hljs-string\">\"non\"<\/span>|<span class=\"hljs-string\">\"no\"<\/span>|<span class=\"hljs-string\">\"n\"<\/span>)\r\n        <span class=\"hljs-comment\"># action si l'utilisateur r\u00e9pond non<\/span>\r\n    ;;\r\n<span class=\"hljs-keyword\">esac<\/span>\r\n<\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">R\u00e9cup\u00e9rer la longueur de la chaine de caract\u00e8re.<\/h3>\n<\/div>\n<\/div>\n<\/div>\n<p>Pour r\u00e9cup\u00e9rer la longueur d&rsquo;une chaine de caract\u00e8re il suffit de pr\u00e9c\u00e9der le nom de la variable par &lsquo;#&rsquo; comme ceci :<\/p>\n<p>${#variable}<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"Chaine d'une certaine longueur\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">${<\/span><span class=\"hljs-comment\">#VAR}<\/span>\r\n<span class=\"hljs-number\">30<\/span><\/pre>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Taille d&rsquo;un tableau<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Il est possible d&rsquo;obtenir le nombre d&rsquo;\u00e9l\u00e9ments d&rsquo;un tableau de la fa\u00e7on suivante :<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>unset <span class=\"hljs-constant\">VAR<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">0<\/span>]=<span class=\"hljs-string\">\"blablabla\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">1<\/span>]=<span class=\"hljs-string\">\"azeaze\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">2<\/span>]=<span class=\"hljs-string\">\"test\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">3<\/span>]=<span class=\"hljs-string\">\"someText\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">4<\/span>]=<span class=\"hljs-number\">48<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">5<\/span>]=<span class=\"hljs-number\">98985<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">${<\/span><span class=\"hljs-comment\">#VAR[*]}<\/span>\r\n<span class=\"hljs-number\">6<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">${<\/span><span class=\"hljs-comment\">#VAR[@]}<\/span>\r\n<span class=\"hljs-number\">6<\/span>\r\n<\/pre>\n<p>Attention \u00e0 ne pas oublier les crochets, sinon # retournera simplement la longueur du premier \u00e9l\u00e9ment du tableau.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>unset <span class=\"hljs-constant\">VAR<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">0<\/span>]=<span class=\"hljs-string\">\"blablabla\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">1<\/span>]=<span class=\"hljs-string\">\"azeaze\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>[<span class=\"hljs-number\">2<\/span>]=<span class=\"hljs-string\">\"test\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">${<\/span><span class=\"hljs-comment\">#VAR}<\/span>\r\n<span class=\"hljs-number\">9<\/span><\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">D\u00e9terminer le nombre de param\u00e8tre pass\u00e9s au script<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Pour connaitre le nombre de param\u00e8tres pass\u00e9s au script ($1, $2 &#8230;) on utilisera &lsquo;${#*}&rsquo; et &lsquo;${#@}<\/p>\n<pre class=\"programlisting hljs bash\"><span class=\"hljs-number\">96386<\/span>@kws:~$ vi test.sh\r\n<span class=\"hljs-shebang\">#!\/bin\/bash<\/span>\r\n<span class=\"hljs-built_in\">echo<\/span> <span class=\"hljs-string\">\"\\${#*} : '<span class=\"hljs-variable\">${#*}<\/span>' \\${#@} : '<span class=\"hljs-variable\">${#@}<\/span>'\"<\/span>\r\n    \r\n    \r\n<span class=\"hljs-number\">96386<\/span>@kws:~$ bash test.sh var1 <span class=\"hljs-built_in\">test<\/span> something\r\n<span class=\"hljs-variable\">${#*}<\/span> : <span class=\"hljs-string\">'3'<\/span> <span class=\"hljs-variable\">${#@}<\/span> : <span class=\"hljs-string\">'3'<\/span><\/pre>\n<\/div>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">Assignation des variables<\/h3>\n<\/div>\n<\/div>\n<\/div>\n<p>Plut\u00f4t que d&rsquo;utiliser des &lsquo;if&rsquo;, &lsquo;else&rsquo; et d&rsquo;assigner des valeurs par d\u00e9faut si les variables sont vides il existe des m\u00e9canismes permettant l&rsquo;usage ou l&rsquo;assignation d&rsquo;une valeur alternative pour ces variables.<\/p>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Utiliser une alternative<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>La formulation ${var-alternative} permet l&rsquo;utilisation d&rsquo;une alternative si la variable n&rsquo;est pas assign\u00e9e<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>unset <span class=\"hljs-constant\">VAR<\/span> <span class=\"hljs-comment\"># on s'assure que la variable n'existe pas\/plus<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var: '${VAR-\"<\/span>default<span class=\"hljs-string\">\"}'\"<\/span>\r\n<span class=\"hljs-symbol\">var:<\/span> <span class=\"hljs-string\">'default'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var: '${VAR-\"<\/span>default<span class=\"hljs-string\">\"}'\"<\/span>\r\n<span class=\"hljs-symbol\">var:<\/span> <span class=\"hljs-string\">''<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"VALUE\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var: '${VAR-\"<\/span>default<span class=\"hljs-string\">\"}'\r\nvar: 'VALUE'\r\n\r\n96386@kws:~$ VAR2=\"<\/span>someVar<span class=\"hljs-string\">\"\r\n96386@kws:~$ unset VAR\r\n96386@kws:~$ echo ${VAR-$VAR2}\r\nsomeVar<\/span><\/pre>\n<p>On constate que si la variable existe mais ne contient aucun caract\u00e8re, elle n&rsquo;est pas remplac\u00e9e par la valeur de substitution. Pour sp\u00e9cifier \u00e0 Bash que les variables vides sont \u00e9galement \u00e0 remplacer nous allons utiliser la forme suivante : ${var:-alternative} (ajout du &lsquo;:&rsquo;).<\/p>\n<pre class=\"programlisting hljs perl\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span>:~$ unset VAR <span class=\"hljs-comment\"># on s'assure que la variable n'existe pas\/plus<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span>:~$ echo <span class=\"hljs-string\">\"'<span class=\"hljs-subst\">${VAR:-\"default\"}<\/span>'\"<\/span>\r\n<span class=\"hljs-string\">'default'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span>:~$ VAR=<span class=\"hljs-string\">\"\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span>:~$ echo <span class=\"hljs-string\">\"'<span class=\"hljs-subst\">${VAR:-\"default\"}<\/span>'\r\n'default'\r\n96386<span class=\"hljs-variable\">@kws<\/span>:~$ VAR=\"<\/span>VALUE<span class=\"hljs-string\">\"\r\n96386<span class=\"hljs-variable\">@kws<\/span>:~$ echo \"<\/span><span class=\"hljs-string\">'${VAR:-\"default\"}'<\/span><span class=\"hljs-string\">\"\r\n'VALUE' \r\n96386<span class=\"hljs-variable\">@kws<\/span>:~$ VAR2=\"<\/span>someVar<span class=\"hljs-string\">\"\r\n96386<span class=\"hljs-variable\">@kws<\/span>:~$ VAR=\"<\/span><span class=\"hljs-string\">\"\r\n96386<span class=\"hljs-variable\">@kws<\/span>:~$ echo <span class=\"hljs-subst\">${VAR:-<span class=\"hljs-variable\">$VAR2<\/span>}<\/span>\r\nsomeVar<\/span><\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Assigner une valeur par d\u00e9faut<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>La m\u00e9thode pr\u00e9c\u00e9dente permettait de retourner une valeur diff\u00e9rente lors de l&rsquo;usage de la variable mais la valeur de la variable restait inchang\u00e9e. La syntaxe ${var=&nbsp;&raquo;alternativeValue&nbsp;&raquo;} permet de d&rsquo;assigner une valeur \u00e0 la variable si celle ci n&rsquo;est pas d\u00e9clar\u00e9e .<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>unset <span class=\"hljs-constant\">VAR<\/span> <span class=\"hljs-comment\"># on s'assure que la variable n'existe pas\/plus<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var :'$VAR'\"<\/span>\r\nvar <span class=\"hljs-symbol\">:<span class=\"hljs-string\">''<\/span><\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var :'${VAR=default}'\"<\/span>\r\nvar <span class=\"hljs-symbol\">:<span class=\"hljs-string\">'default'<\/span><\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var :'$VAR'\"<\/span>\r\nvar <span class=\"hljs-symbol\">:<span class=\"hljs-string\">'default'<\/span><\/span>\r\n<\/pre>\n<p>Comme pour l&rsquo;utilisation d&rsquo;une valeur de substitution, il est possible de diff\u00e9rencier une variable non assign\u00e9e d&rsquo;une variable vide. ${VAR:=default} permet de remplacer la valeur des variables d\u00e9clar\u00e9e mais vides.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var :'$VAR'\"<\/span>\r\nvar <span class=\"hljs-symbol\">:<span class=\"hljs-string\">''<\/span><\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var :'${VAR=default}'\"<\/span>\r\nvar <span class=\"hljs-symbol\">:<span class=\"hljs-string\">''<\/span><\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var :'$VAR'\"<\/span>\r\nvar <span class=\"hljs-symbol\">:<span class=\"hljs-string\">''<\/span><\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var :'${VAR:=default}'\"<\/span>\r\nvar <span class=\"hljs-symbol\">:<span class=\"hljs-string\">'default'<\/span><\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"var :'$VAR'\"<\/span>\r\nvar <span class=\"hljs-symbol\">:<span class=\"hljs-string\">'default'<\/span><\/span><\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Utiliser une alternative et quitter<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Toujours dans la liste des valeurs alternatives, il est possible d&rsquo;utiliser une valeur par d\u00e9faut et de quitter le programme avec un code de de retour &lsquo;1&rsquo;. La formulation est la suivante : ${var?alternative]<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>unset var\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>parametre=<span class=\"hljs-variable\">${<\/span><span class=\"hljs-constant\">VAR<\/span>?<span class=\"hljs-string\">\"Var is not set\"<\/span>}\r\n<span class=\"hljs-symbol\">bash:<\/span> <span class=\"hljs-constant\">VAR<\/span><span class=\"hljs-symbol\">:<\/span> <span class=\"hljs-constant\">Var<\/span> is <span class=\"hljs-keyword\">not<\/span> set<\/pre>\n<p>La formulation reste la m\u00eame pour sp\u00e9cifier que l&rsquo;on souhaite aussi filtrer les variables d\u00e9finies mais vides : ${var:?&nbsp;&raquo;Var is not set or empty&nbsp;&raquo;}<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>var=<span class=\"hljs-string\">\"\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>parametre=<span class=\"hljs-variable\">${<\/span><span class=\"hljs-constant\">VAR<\/span><span class=\"hljs-symbol\">:?\"<\/span><span class=\"hljs-constant\">Var<\/span> is <span class=\"hljs-keyword\">not<\/span> set <span class=\"hljs-keyword\">or<\/span> empty<span class=\"hljs-string\">\"}\r\n-bash: var: Var is not set or empty<\/span><\/pre>\n<\/div>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">Extraire une sous-chaine<\/h3>\n<\/div>\n<\/div>\n<\/div>\n<p>Il est courant de travailler sur des fractions d&rsquo;une chaine de caract\u00e8res. Il est possible d&rsquo;obtenir ses \u00e9l\u00e9ments avec la fonction suivante : ${var:&lt;position&gt;:&lt;longueur&gt;}<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"Hello world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR:6}'\"<\/span>\r\n<span class=\"hljs-string\">'world !'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR:1:4}'\"<\/span>\r\n<span class=\"hljs-string\">'ello'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR:6:20}'\"<\/span>\r\n<span class=\"hljs-string\">'world !'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR::3}'\"<\/span>\r\n<span class=\"hljs-string\">'first 3'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR: -3}'\"<\/span>\r\n<span class=\"hljs-string\">'d !'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR::-1}'\"<\/span>\r\n<span class=\"hljs-string\">'Hello world '<\/span><\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">Supprimer une sous-chaine<\/h3>\n<\/div>\n<\/div>\n<\/div>\n<p>Il est possible de se d\u00e9barrasser rapidement de chaine de caract\u00e8res pr\u00e9c\u00e9dant ou suivant la partie recherch\u00e9e, pour r\u00e9cup\u00e9rer le nom d&rsquo;un fichier sans les r\u00e9pertoires auquel il appartient ou sans son extension par exemple !<\/p>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">&lsquo;#&rsquo; Supprimer depuis le d\u00e9but de la chaine<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>L&rsquo;utilisation du &lsquo;#&rsquo; (${var#pattern}) permet de supprimer la premi\u00e8re portion correspondant au pattern que l&rsquo;on passe en param\u00e8tre.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"hello world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR#h*o}'\"<\/span>\r\n<span class=\"hljs-string\">' world !'<\/span>.<\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">##<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Le double &lsquo;#&rsquo; (${var##pattern) s&rsquo;utilise de la m\u00eame fa\u00e7on que le simple &lsquo;#&rsquo; \u00e0 la diff\u00e9rence que celui-ci supprimera la chaine correspondante la plus longue.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"hello world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR##h*o}'\"<\/span>\r\n<span class=\"hljs-string\">'rld !'<\/span><\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">&lsquo;%&rsquo; Supprimer depuis la fin de la chaine<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Le &lsquo;%&rsquo; (${var%pattern}) permet de supprimer la chaine correspondante \u00e0 notre pattern depuis la fin de notre variable<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"hello world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR%o*}'\"<\/span>\r\n<span class=\"hljs-string\">'hello w'<\/span><\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">%%<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Comme pour le &lsquo;##&rsquo; le double %% permet de s\u00e9lectionner la plus grande chaine, ici depuis la fin de la variable.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"hello world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR%%o*}'\"<\/span>\r\n<span class=\"hljs-string\">'hell'<\/span><\/pre>\n<\/div>\n<p>A noter que ces outils ne permettent la suppression de chaine de caract\u00e8res que depuis l&rsquo;un des bords de la variable.<\/p>\n<p>Pour supprimer une sous-chaine pr\u00e9sente au milieu de la variable on pourra utiliser de remplacement de chaine de caract\u00e8re &lsquo;\/&rsquo; sans lui passer de chaine de remplacement. Pour supprimer la premi\u00e8re occurence :<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"hello world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/o\/}'\"<\/span>\r\n<span class=\"hljs-string\">'hell world !'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"hello world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/l*o\/}'\"<\/span>\r\n<span class=\"hljs-string\">'herld !'<\/span>\r\n<\/pre>\n<p>Pour supprimer l&rsquo;ensemble des occurrences on utilisera &lsquo;\/\/&rsquo;<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"hello world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/\/o\/}'\"<\/span>\r\n<span class=\"hljs-string\">'hell wrld !'<\/span><\/pre>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Exemple d&rsquo;utilisation<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Les traitements de chaines de caract\u00e8re que nous voulons voir sont tr\u00e8s pratiques lorsque, par exemple, de la manipulation de fichiers. Prenons ici comme exemple le fichier &lsquo;\/etc\/apache2\/sites-available\/000-default.conf&rsquo; et regardons ensemble comment extraire le path, le nom du fichier et son extension.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>file=<span class=\"hljs-string\">'\/etc\/apache2\/sites-available\/000-default.conf'<\/span><\/pre>\n<p>Pour r\u00e9cup\u00e9rer le path, nous allons simplement tout supprimer depuis la fin du fichier jusqu&rsquo;au premier &lsquo;\/&rsquo; rencontr\u00e9<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>file=<span class=\"hljs-string\">'\/etc\/apache2\/sites-available\/000-default.conf'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>filePath=<span class=\"hljs-variable\">${<\/span>file<span class=\"hljs-string\">%\/*}\r\n96386@kws:~$ echo $filePath \r\n\/<\/span>etc\/apache2\/sites-available<\/pre>\n<p>Pour r\u00e9cup\u00e9rer le fichier, nous allons proc\u00e9der de la fa\u00e7on inverse : nous allons tout supprimer depuis le d\u00e9but jusqu&rsquo;au dernier &lsquo;\/&rsquo;<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>file=<span class=\"hljs-string\">'\/etc\/apache2\/sites-available\/000-default.conf'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>fileName=<span class=\"hljs-variable\">${<\/span>file<span class=\"hljs-comment\">##*\/}<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">$fileName<\/span> \r\n<span class=\"hljs-number\">000<\/span>-default.conf<\/pre>\n<p>Pour supprimer l&rsquo;extension de notre fichier nous allons supprimer tout les caract\u00e8res depuis la fin jusqu&rsquo;au premier &lsquo;.&rsquo;<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>file=<span class=\"hljs-string\">'\/etc\/apache2\/sites-available\/000-default.conf'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>fileNameShort=<span class=\"hljs-variable\">${<\/span>fileName%.*}\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">$fileNameShort<\/span> \r\n<span class=\"hljs-number\">000<\/span>-default<\/pre>\n<p>Et enfin pour extraire l&rsquo;extension nous allons garder uniquement ce qu&rsquo;il reste apr\u00e8s le dernier &lsquo;.&rsquo;<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>file=<span class=\"hljs-string\">'\/etc\/apache2\/sites-available\/000-default.conf'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>fileExtension=<span class=\"hljs-variable\">${<\/span>fileName<span class=\"hljs-comment\">##*.}<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-variable\">$fileExtension<\/span> \r\nconf<\/pre>\n<\/div>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h3 class=\"title\">Remplacement de sous-chaine<\/h3>\n<\/div>\n<\/div>\n<\/div>\n<p>En plus des possibilit\u00e9s de suppression et d&rsquo;extraction de sous-chaine de caract\u00e8re, il est \u00e9galement possible de remplacer certaines expressions dans notre variable avec l&rsquo;utilisation du &lsquo;\/&rsquo;.<\/p>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Remplacer le premier \u00e9l\u00e9ment trouv\u00e9.<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Pour remplacer le premi\u00e8re \u00e9l\u00e9ment correspondant, on utilisera la syntaxe suivante :${var\/pattern\/remplacement\/}.<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"blablabla\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/a\/o}'\"<\/span>\r\n<span class=\"hljs-string\">'bloblabla'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/bl\/pl}'\"<\/span>\r\n<span class=\"hljs-string\">'pliblablobleblu'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/bla\/123}'\"<\/span>\r\n<span class=\"hljs-string\">'bli123blobleblu'<\/span><\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Remplacer l&rsquo;ensemble des \u00e9l\u00e9ments correspondants.<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Pour remplacer l&rsquo;ensemble des \u00e9l\u00e9ments correspondants par la chaine pass\u00e9 en deuxi\u00e8me param\u00e8tre nous utiliserons le double &lsquo;\/&rsquo;.<\/p>\n<p>${string\/\/substring\/replacement}<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"blablabla\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/\/a\/o}'\"<\/span>\r\n<span class=\"hljs-string\">'blobloblo'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span><span class=\"hljs-constant\">VAR<\/span>=<span class=\"hljs-string\">\"bliblablobleblu\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/\/bl\/pl}'\"<\/span>\r\n<span class=\"hljs-string\">'pliplaplopleplu'<\/span>\r\n<\/pre>\n<\/div>\n<div class=\"section\">\n<div class=\"titlepage\">\n<div>\n<div>\n<h4 class=\"title\">Remplacer le dernier \u00e9l\u00e9ment correspondant.<\/h4>\n<\/div>\n<\/div>\n<\/div>\n<p>Pour remplacer la plus grande correspondance depuis le d\u00e9but de la chaine on utilisera le &lsquo;\/#&rsquo;<\/p>\n<p>${string\/#substring\/replacement}<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>var=<span class=\"hljs-string\">\"Hello, world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${var\/#*o\/i}'\"<\/span>\r\n<span class=\"hljs-string\">'irld !'<\/span><\/pre>\n<p>Ce qui est similaire \u00e0 &lsquo;\/&rsquo;<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/*o\/i}'\"<\/span>\r\n<span class=\"hljs-string\">'irld !'<\/span><\/pre>\n<p>Pour remplacer la plus longue correspondance depuis la fin de la chaine de caract\u00e8re, on utilisera le &lsquo;\/%&rsquo;<\/p>\n<p>${string\/%substring\/replacement}<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>var=<span class=\"hljs-string\">\"Hello, world !\"<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${var\/%o\/i}'\"<\/span>\r\n<span class=\"hljs-string\">'Hello, world !'<\/span>\r\n<span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${var\/%o*\/il}'\"<\/span>\r\n<span class=\"hljs-string\">'Helli'<\/span><\/pre>\n<p>Ce qui est similaire \u00e0 &lsquo;\/&rsquo;<\/p>\n<pre class=\"programlisting hljs ruby\"><span class=\"hljs-number\">96386<\/span><span class=\"hljs-variable\">@kws<\/span><span class=\"hljs-symbol\">:~<\/span><span class=\"hljs-variable\">$ <\/span>echo <span class=\"hljs-string\">\"'${VAR\/o*\/i}'\"<\/span>\r\n<span class=\"hljs-string\">'irld !'<\/span><\/pre>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Assigner et afficher une variable En BASH, une variable est identifi\u00e9e par l&rsquo;usage du &lsquo;$&rsquo;, sauf pour lui attribuer une valeur o\u00f9 l&rsquo;on omet le &lsquo;$&rsquo;. #assignation de la variable 96386@kws:~$ maVariable=&rsquo;Ceci est une chaine de caract\u00e8res&rsquo; #utilisation de la variable 96386@kws:~$ echo $mavariable Ceci est une chaine de caract\u00e8res Il est \u00e9galement possible d&rsquo;utiliser &hellip; <a href=\"http:\/\/les-fougs.com\/wordpress\/2019\/08\/20\/manipulation-de-chaine-de-caracteres-linux\/\" class=\"more-link\">Continuer la lecture<span class=\"screen-reader-text\"> de &laquo;&nbsp;Manipulation de cha\u00eene de caract\u00e8res Linux&nbsp;&raquo;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[53],"tags":[],"_links":{"self":[{"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/posts\/2233"}],"collection":[{"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/comments?post=2233"}],"version-history":[{"count":3,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/posts\/2233\/revisions"}],"predecessor-version":[{"id":2236,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/posts\/2233\/revisions\/2236"}],"wp:attachment":[{"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/media?parent=2233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/categories?post=2233"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/les-fougs.com\/wordpress\/wp-json\/wp\/v2\/tags?post=2233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}