Table of Content
Weight: 4
Description: Candidates should be able to customize existing scripts, or write simple new Bash scripts.
Key Knowledge Areas:
- Use standard sh syntax (loops, tests)
- Use command substitution
- Test return values for success or failure or other information provided by a command
- Perform conditional mailing to the superuser
- Correctly select the script interpreter through the shebang (#!) line
- Manage the location, ownership, execution and suid-rights of scripts
Terms and Utilities:
for while test if read seq exec
head
#!/bin/sh
script permission
chmod a+x my-script
source
run in the current shell, as opposed to launching a new instance of the shell
$ source my-script $ . my-script
check_interface.sh
#!/bin/sh ip=$(route -n | grep UG | tr -s " " | cut -f 2 -d " ") ping="bin/ping" echo "Checking to see if $ip is up..." $ping -c 5 $ip
add_user.sh
#!/bin/sh echo -n "Enter a username: " read name useradd -m $name passwd $name mkdir -p /shared/$name chown $name.users /shared/$name chmod 775 /shared/$name ln -s /shared/$name /home/$name/shared chown $name.users /home/$name/shared
if
if test -s /tmp/tempstuff
if [ command ]
then
additional-commands
fi
if [ conditional-expression ]
then
commands
else
other-commands
fi
case word in
pattern1) command(s) ;;
pattern2) command(s) ;;
...
esac
loop
#!/bin/bash
for d in $(ls *.wav) ; do
aplay $d
done
cp.sh
#/bin/bash
doit() {
cp $1 $2
}
function check() {
if [ -s $2 ]
then
echo "Target file exists! Exiting!"
exit
fi
}
check $1 $2
doit $1 $2
seq
oldhorse@dclab:~$ seq --help Usage: seq [OPTION]... LAST or: seq [OPTION]... FIRST LAST or: seq [OPTION]... FIRST INCREMENT LAST oldhorse@dclab:~$ seq 1 2 6 1 3 5