The Linux Command Line by William Shotts
http://linuxcommand.org/tlcl.php
Part 4 - Writing Shell Scripts
24 - Writing Your First Script
How to Write a Shell Script
- What a script
#!/bin/bash
(shebang
) - Make the script executable:
755
for everyone can execute,700
for only the owner can execute - Put the script somewhere the shell can find it: usually in
/usr/local/bin
By using line-continuations(backslash-linefeed sequences) and indentation, the logic of command can be more clearly to the reader.
Configuring vim
for Script Writing
:syntax on
:set hlsearch
:set tabstop=4
:set autoindent # to stop indentation, type `Ctrl-d`
25 - Starting a Project
Variables and Constants
When the shell encounters a variables, it automatically creates it.
# this declares a read-only variable (constant)
declare -r TITLE="Page Title"
filename="myfile"
touch "$filename"
# mv "$filename" "$filename1"
# this avoids the shell intepreting the second argument as a new (and empty) variable
mv "$filename" "${filename}1"
ls=aaa # assign the string "aaa" to variable ls
echo "ls equals $ls"
echo ${ls} # print the variable ls
echo $(ls) # results of a command, one line
echo "$(ls)" # results of a command, multiple lines
echo $((5+7)) # 12
echo "aaa\nbbb" # escape sequences such as tabs and newlines
here document
: is an additional form of I/O redirection in which we embed a body of text into our scritpt and feed it into the standard input of a command.
- Single and double quotaes within here documents losed their special meaning to the shell
command << token
text
token
foo="some text"
cat << _EOF_
$foo
"$foo"
'$foo'
\$foo
_EOF_
26 - Top-Down Design
27 - Flow Control: Branching With If
Tricks
Get a HTML version of bash
manpage:
gunzip -c $(man -w bash) | groff -mandoc -Thtml > bash.html
Source: https://unix.stackexchange.com/a/159247/390007