Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
What is a shell script?
So far, all the commands you've been writing were only executed in the terminal. Often, however, you want to save the commands so that you can use them later. We can do this by writing a shell script! A shell script is essentially a sequence of commands that you would normally just type into the command line, but saved into a file. Let's take a look at our first shell script!
First, make sure you already have the source code for this bootcamp:
git clone git://github.com/hcs/bootcamp-unix.git cd bootcamp-unix
There should be a
scripts directory that will contain the examples from this part of tutorial. You'll be able to run all the examples from that directory.
Take a look at our first script
cat hello.sh to dump the contents of the file, and
./hello.sh to run the script).
#!/bin/bash echo "Hello bootcampers!"
#!/bin/bash at the very top. All shell scripts must start with this!!!. Also, if you run the command
ls -l hello.sh, you'll see this:
-rwxr-xr-x 1 kennyyu staff 39 Sep 24 22:59 hello.sh
x's. All shell scripts must have executable permissions!!!. Remember that to add executable permissions to a file, use
chmod +x FILE.
A shell script:
MUST start with
#!/bin/bashas the very first line
MUST have executable permissions. Use
chmod +x FILEto add executable permissions to a file
- Can contain any sequence of commands that you can enter normally at the command line.
- Each line must be its own complete command that should run in a terminal. A complete command can be chain of piped commands, or a sequence of commands separated by
- By convention, shell scripts have the
.shextension, but this is not necessary.
Let's move onto our next script
greetings.sh where we will read input from the user:
#!/bin/bash echo "What is your name?" read name echo "Hi $name!"
When we run it (
read command prompts us for input, and it will save the input in the variable called
What is your name? Kenny Hi Kenny!
Note that you can use pipes and input/output redirection like any normal command:
echo "Kenny" | ./greetings.sh > hi.txt cat hi.txt
This will send "Kenny" as input to the
greetings.sh script, and all output of the script will be saved in the
If we want to repeat an operation, we can use a loop. If you've programmed in C, C++, Java, Python, or any languages similar to these, you've probably seen the
for keywords before. The terminal has both of these as well! We'll only discuss
while for now. Let's take a look at the script
#!/bin/bash while read line do echo "hi $line!" done
If we run it (
./loop.sh), it will continuously prompt us for input until we press
CTRL+D to signal the end of input:
Kenny hi Kenny! Karen hi Karen! Saagar hi Saagar!
Everything between the
done keywords is every time the
while loop reads new input into the variable
Command Line Arguments
We can pass arguments at the command line to shell scripts! Take a look at the script
#!/bin/bash # Comments must start with the '#' character # Command line arguments are found in $0, $1, $2, ... # Note that $0 is always the name of the current program. # '-z $1' will return true if the first argument is NOT set. # '-o' will perform a logical OR if [ -z $1 -o -z $2 ] then echo "usage: $0 arg1 arg2" exit fi echo "hello $1 and $2!"
If we run it without arguments (
./args.sh), it will print the following message:
usage: ./args.sh arg1 arg2
If we provide the arguments (e.g.
./args.sh kenny saagar), it will run the program:
hello kenny and saagar!
Finish the rest of bootcamp
Go back to the main page.