GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser l'extension des paramètres pour modifier la sortie d'une autre extension ?

J'essaie d'utiliser les extensions de paramètre Bash pour modifier la sortie d'une substitution de commande ou d'une autre extension de paramètre.

Les extensions imbriquées suivantes fonctionnent assez bien dans Zsh ; mais entraîne une erreur de "mauvaise substitution" dans Bash :

${${PWD##*/}//trunk/latest}

ou

${$(basename $PWD)//trunk/latest}

la sortie doit être le dernier dossier du $PWD , remplacé par latest quand mon répertoire actuel est trunk

donc /home/user/trunk devrait devenir latest

Existe-t-il un équivalent Bash permettant d'enchaîner les expansions sans s'appuyer sur des variables ou des tuyaux ? Ou est-ce que les expansions Bash autorisent uniquement l'entrée à être une chaîne ou une variable simple ?

Réponse acceptée :

Non, cette imbrication des opérateurs de substitution est unique à zsh .

Notez qu'avec zsh comme avec (t)csh , vous pouvez également faire ${PWD:t:s/trunk/latest/} .

Bien que bash prend également en charge ces modificateurs d'historique csh pour l'expansion de l'historique, il ne les prend pas en charge pour ses extensions de paramètres.

Ici avec bash , utilisez une variable temporaire :

var=${PWD##*/} var=${var//trunk/latest}

Linux
  1. Comment utiliser les commandes d'historique de Bash

  2. Diviser la sortie de la commande par colonnes à l'aide de Bash ?

  3. Utilisation de la sortie des commandes précédentes dans bash

  4. convertir la sortie bash `ls` en tableau json

  5. À quoi sert $# dans Bash

Comment utiliser la commande de lecture Bash

Bash :Écrire dans un fichier

Utiliser l'extension .sh ou .bash pour les scripts bash ?

Comment se rappeler comment utiliser la redirection ?

Utiliser les variables à l'intérieur de l'expansion {} sans `eval` ?

Qu'est-ce que Zsh ? Devriez-vous l'utiliser ?