2010-07-28 8 views
3

Est-ce que quelqu'un pourrait expliquer comment ## */fonctionne dans UNIX Shell scripting. J'ai vu son utilisation dans Korn Shell. Il est spécifiquement utilisé pour supprimer l'extension du fichier.## */Utilisation dans UNIX Shell Scripting

par exemple. func_write_app_log "o Suppression fichier d'état {$ CIE_STATUS_FILE ## * /}"

Ici le fichier Supposons est CIE_STATUS_FILE.DAT, alors ## */affiche CIE_STATUS_FILE

+0

Vous pouvez supprimer les préfixes et les suffixes modèles correspondant à ces constructions. Ceux-ci sont spécifiés par POSIX et fonctionnent dans de nombreux shells, par ex. zsh, bash, ksh et même vieux bourne shell (sh). La référence est http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02 – Jens

Répondre

5

Cela fonctionne aussi dans Bash et est décrit here :

$ {string} ## sous-chaîne

Supprime le plus long match de l'avant $ sous-chaîne de chaîne de $.

Le * est un caractère générique qui signifie correspondre à n'importe quoi. Votre exemple supprime le chemin du fichier, pas l'extension.

 
$ bazfile='/foo/bar/baz.txt' 
$ echo ${bazfile##*/} 
baz.txt 

Pour supprimer l'extension que vous souhaitez utiliser %:

$ {string%} substring

match le plus court Supprime $ de sous-chaîne arrière de $ string.

 
$ echo ${bazfile%.*} 
/foo/bar/baz 
Questions connexes