Differences between revisions 3 and 36 (spanning 33 versions)
Revision 3 as of 2007-05-17 19:04:49
Size: 3022
Editor: p5493499A
Comment:
Revision 36 as of 2016-03-23 18:43:58
Size: 405
Editor: NumbersHar
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[Anchor(faq73)]]
== How can I use parameter expansion? How can I get substrings? How can I get a file without its extension, or get just a file's extension? ==

Parameter Expansion is a separate section of the [http://tiswww.case.edu/php/chet/bash/bash.html#lbBA bash manpage] (also {{{man bash -P 'less -p "^ Parameter Expansion"'}}} or see [http://tiswww.tis.case.edu/~chet/bash/bashref.html#SEC30 the reference] or [http://bash-hackers.org/wiki/doku.php?id=syntax:pe the bash hackers article] about it). It can be hard to understand parameter expansion without actually using it. (DO NOT think about parameter expansion like a regex. It is different and distinct.)

Here's an example of how to use parameter expansion with something akin to a hostname (dot-separated components):

{{{
parameter result
----------- ------------------------------
${NAME} polish.ostrich.racing.champion
${NAME#*.} ostrich.racing.champion
${NAME##*.} champion
${NAME%%.*} polish
${NAME%.*} polish.ostrich.racing
}}}

And, here's an example of the parameter expansions for a typical filename.

{{{
parameter result
----------- --------------------------------------------------------
${FILE} /usr/share/java-1.4.2-sun/demo/applets/Clock/Clock.class
${FILE#*/} usr/share/java-1.4.2-sun/demo/applets/Clock/Clock.class
${FILE##*/} Clock.class
${FILE%%/*}
${FILE%/*} /usr/share/java-1.4.2-sun/demo/applets/Clock
}}}

You cannot nest parameter expansions. If you need to perform two separate expansions, use a temporary variable to hold the result of the first expansion.

You may find it helpful to associate that, on your keyboard, the "#" is to the left of the "$" symbol and the "%" symbol is to its right; this corresponds with their acting upon the left (beginning) and right (end) parts of the parameter.

Here are a few more examples (but ''please'' see the real documentation for a list of all the features!). I include these mostly so people won't break the wiki again, trying to add new questions that answer this stuff.

{{{
${string:2:1} # The third character of string (0, 1, 2 = third)
${string:1} # The string starting from the second character
  # Note: this is equivalent to ${string#?}
${string%?} # The string with its last character removed.
${string: -1} # The last character of string
${string:(-1)} # The last character of string, alternate syntax
  # Note: string:-1 means something entirely different.

${file%.mp3} # The filename without the .mp3 extension
  # Very useful in loops of the form: for file in *.mp3; do ...
${file%.*} # The filename without its extension (assuming there was
  # only one extension in the first place...).
${file%%.*} # The filename without all of its extensions
${file##*.} # The extension only.
}}}
48 yr old Production Supervisor (Manufacturing ) Rafael from Brome, has interests which include beach, Générateur De Crédit FUT 16 and diecast collectibles. Constantly enjoys going to places like Mausoleum of Khoja Ahmed Yasawi.<<BR>><<BR>>
<<BR>><<BR>>
Here is my blog post :: [[http://carolinaalcubilla.com/?option=com_k2&view=itemlist&task=user&id=260179|generateur de credit fut 16 avis]]

48 yr old Production Supervisor (Manufacturing ) Rafael from Brome, has interests which include beach, Générateur De Crédit FUT 16 and diecast collectibles. Constantly enjoys going to places like Mausoleum of Khoja Ahmed Yasawi.



Here is my blog post :: generateur de credit fut 16 avis

BashFAQ/073 (last edited 2024-10-08 22:32:27 by larryv)