Bourne Shell: Difference between revisions
repair syntax highlighting
m (This Bourne article is very timely.) |
LucasLarson (talk | contribs) (repair syntax highlighting) |
||
(7 intermediate revisions by 5 users not shown) | |||
Line 1:
{{stub}}{{implementation|UNIX Shell}}
{{implementation|UNIX Shell}}The '''Bourne Shell''' is a UNIX shell upon which many shells are based; notably ksh and bash. (The other major tree of UNIX shells descend from csh)▼
▲
'''Portable Shell Syntax''' is the scripting language syntax used by the [[wp:UNIX System V|System V]] Bourne shell. This syntax is compatible with the heirloom shell and is the syntax documented in most Unix books. Examples marked "Works with: Bourne Shell" should work in any of the Bourne-compatible shells.
#!/bin/sh▼
A Bourne Shell script begins with a [[wp:shebang (Unix)|shebang]] (also known as a ''hashbang'') like this, which tells the operating system to use the Bourne compatible shell interpreter:
<syntaxhighlight lang="sh">
''[http://www.computerworld.com.au/article/279011/-z_programming_languages_bourne_shell_sh The A-Z of Programming Languages: Bourne shell, or sh]'' which details the Bourne shell origins and design decisions.▼
</syntaxhighlight>
▲In 2009, ''[
== Bugs ==
Bourne Shell and Heirloom Shell have problems with here documents. Here is one such problem. A substitution, inside a here document, inside backquotes, inside double quotes, does insert too many backslashes.
<syntaxhighlight lang="sh">f() {
cat <<!
here $1
!
}
expr "`f string`"
# Output from Bourne Shell: here \s\t\r\i\n\g
# Correct output: here string</syntaxhighlight>
The workaround is to move the backquotes to an assignment.
<syntaxhighlight lang="sh">f() {
cat <<!
here $1
!
}
var=`f string`
expr "$var"
# Output: here string</syntaxhighlight>
|