Shell Script Examples: case, count, for, if, while and User input

原文地址: http://rhau.se/2009/04/17/shell-script-examples-case-count-for-if-while-and-user-input/


If you, like so many other people these days, switch to Linux you will come in contact with something called unux scripts, shell scripts or bash scripts. These scripts are text-files that execute commands just like bat-files in Windows. I prefer shell-scripts because i think they are more powerful then bat-files but that is just my opinion.

Some things you should know:
#!/bin/bash usually is the first line in a bash script. It is called shebang (also called a hashbang, hashpling, or pound bang) and specifies in which shell to execute the code that follows below.

Everything after a # is a comment and does not get executed.

Below you will find examples of a few things that you can do with shell scripts on Linux and other Unixes. If you have questions: have a look at the man page of the command or post a comment and I will try to explain.

case

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
 
MENU="
1   Date and Time
2   Calendar for current month
3   quit
"
 
while true; do
  clear
  echo "$MENU"
  echo -n "Please make your choice: "
  read INPUT # Read user input and assign it to variable INPUT
 
  case $INPUT in
    1)
    date
    echo press ENTER to continue
    read
    ;;
    2)
    cal
    echo press ENTER to continue
    read
    ;;
    3|q|Q) # If user presses 3, q or Q we terminate
    exit 0
    ;;
    *) # All other user input results in an usage message
    clear
    echo Please choose alternatves 1, 2 or 3
    sleep 2
    ;;
  esac
 
done

count

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
BEGIN=1 # Start counting here
END=10 # Stop counting here
 
END=`expr $END + 1`
 
while [ $END -ne $BEGIN ]; do # While END is not equal to BEGIN do ...
  echo This is iteration $BEGIN
  BEGIN=`expr $BEGIN + 1` # Increasing the value of BEGIN by one
done

for

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
 
# Defining Variable
STAFF="Anders Bertil Cesar Denise Emilia Filippa"
 
echo First LOOP
for PERSON in $STAFF; do
  echo $PERSON is a member of the staff.
done
 
echo Second LOOP
echo -n "The staff members are: "
for PERSON in $STAFF; do
  echo -n "$PERSON " # -n instructs echo not to print the trailing newline char
done
echo

if

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
VALIDUSER="Thorsten"
 
if [ $VALIDUSER = anders ]; then
  echo $VALIDUSER is a valid user
  exit 0
elif [ $VALIDUSER = bertil ]; then
  echo $VALIDUSER is a valid user
  exit 0
elif [ $VALIDUSER = Thorsten ]; then
  echo $VALIDUSER is a valid user
  exit 0
else
  echo no valid user found
  exit 1
fi

while

1
2
3
4
5
6
7
8
9
10
#!/bin/bash
 
START=1 # The value to begin with
END=10  # When this value is reached we are done
SPEED=1 # Number of seconds between each iteration
while [ $START -le $END ]; do
  echo this is iteration $START of $END
  START=`expr $START + 1`
  sleep $SPEED
done

User Input

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
 
# Check if there is input to this script
if [ $# -lt 1 ]; then # $# contains the total number of arguments to the script
  echo "Usage: $0 [argument1 ...]" # $0 is the executed command
  exit 1
fi
 
NUMPARAMETERS=`echo $#` # The number of parameters provded to this script
 
echo "This script has $NUMPARAMETERS parameters"
 
COUNT=1
 
while [ $COUNT -le $NUMPARAMETERS ]; do
  echo Parameter $COUNT contains $1 # $1 is the first argument
  COUNT=`expr $COUNT + 1` # Increasing COUNT by one
  shift # Shifts input parameters. $2 becomes $1 and the old $1 is discarded
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值