2、表达式是运算符和运算对象的组合体。
1) $[]:可以接受不同基数的数字的表达式
echo $[10+1] (输出:11)
echo "$[2+3],$HOME" (输出:5,/root)
echo $[2<<3],$[8>>1] (输出:16,4)
echo $[2>3],$[3>2] (输出:0,1 表达式为false时输出0,为true时输出1)
2) 字符表达式:直接书写,采用单引号,双引号引起来。
echo " $HOME,That is your root directory." (输出:/root,That is your root directory.)
echo ' $HOME,That is your root directory. ' (输出:$HOME,That is your root directory.)
单引号和双引号的区别在于:单引号是原样显示,双引号则显示出变量的值。
3) test表达式
三、控制结构
1、if语句
例: #!/bin/bash
#if.sh
if [ "10" -lt "12" ] #注意:if和[之间,[和"10"之间,"12"和]都有空格,如果不加空格,会出现语法错误
then
echo "Yes,10 is less than 12"
fi
2、case语句
例: #!/bin/bash
#case.sh
echo -n "Enter a start or stop:"
read ANS
case $ANS in
start)
echo "You select start"
;;
stop)
echo "You select stop"
;;
*)
echo "`basename $0`: You select is not between start and stop" >&2
#注意:>和&2之间没有空格,>&2 表示将显示输出到标准输出(一般是屏幕)上
exit;
;;
esac
3、for循环语句
格式: for 变量名 in 列表
do
命令1
命令2
... ...
done
4、until循环语句
格式: until 条件
do
命令1
命令2
... ...
done
5、while循环语句
格式: while 命令
do
命令1
break
命令2
continue
命令3
... ...
done
四、输入输出
1、几个重要的工具
1) echo
例:echo -n "Enter a number from 1 to 2:" (-n 表示不换行,此时光标停留在行尾)
2) read
例:read ANS (表示将用户的输入存放到变量ANS中)
3) cat (显示文件内容)
4) 管道( | ) (一个程序的输出作为另一个程序的输入)
例:ls -l | grep "d"
5) 文件重定向( >和>> )
例:ls -l > /tmp/a.txt (将输出的结果重写到a.txt这个文件中)
ls -l >> /tmp/a.txt (将输出的结果追加到a.txt这个文件中,常用于记录日志)
6) 标准输入( $0 )、标准输出( $1 )和标准错误( $2 )
采用文件描述符($0、$1、$2)来定义。
2、实例:readme.sh
#!/bin/bash
#readname.sh
echo -n "First Name: "
read firstname
echo -n "Last Name: "
read lastname subname
echo -e "Your First Name is :${firstname}\n " #加了-e表示将\n解析为转义字符
echo -e "Your Last Name is :${lastname}\n "
echo -e "Your Subname is :${subname}\n "
echo "Your First Name is :${firstname}\n " >>firstname.txt #这行没加-e,因此在输出中会原样显示\n
echo "Your Last Name is :${lastname}\n " >lastname.txt
echo "Your Subname is :${subname}\n " >&1
2、实例:func.sh
#!/bin/bash
#func.sh
# Source function library. # /etc/rc.d/init.d/functions中存放了大量已经写好的函数
. /etc/rc.d/init.d/functions # 引入/etc/rc.d/init.d/functions中的函数,相当于其它语言中的include
function hello ()
{
echo "Hello,$1 today is `date`"
}
echo "now going to the function hello"
hello chinaitlab
echo "back from the function"