Shell编程
1. 编写shell脚本
echo -n "hello,world"
echo -n "用户名 `whoami` "
2. 运行shell脚本
- 给脚本添加执行权限 (假定脚本名叫 hello)
chmod -x hello
./hello
- 在指定的shell下执行脚本
sh hello
bash hello
bash -v hello
bash -x hello
3. shell 变量
1. 变量赋值和访问
注意:给变量赋值时,等号两边不要有空格
x="hello,world"
x=8;
y=$x+5
skill="Shell"
echo "I'm good at ${skill}Script"
hello="hello,world"
readonly hello
unset hello
2. 内部变量
变量 | 含义 |
---|
$0 | 当前脚本的文件名 | $n | 传递给脚本或者函数的参数 | $# | 传递给脚本或者函数的参数个数 | $* | 传递给脚本或者函数的所有参数 | $? | 上个命令的退出状态,或者函数的返回值 | $$ | 当前shell进程ID |
#!/bin/bash
echo $0
echo $1
echo $2
echo $#
echo $*
echo $?
echo $$
- 在 shell程序中,可以使用 set 命令为位置参数赋值或重新赋值.
set BB CC
3. 变量值输出
- 如果需要原样输出字符串(不需要进行转义),则应使用单引号。
str="hello"
echo "$str"
echo '$str'
输出内容使用双引号,如果需要 原样输出 美元符号($),反引号(`),双引号("),需要使用转义符号 (\)。
4. 变量值读取
#!/bin/bash
read -p "请输入两个数字:" p1 p2
echo $p1
echo $p2
5. 数组
#!/bin/bash
array=(1 2 3 4 5)
array[0]=6
array[1]=7
echo ${array[0]}
echo ${array[1]}
echo ${array[*]}
echo ${#array[@]}
echo ${#array[3]}
4. 表达式与运算符
a=3
b=4
var=`expr $a + $b`
var=`expr $a \* $b`
val=$[$a+$b]
val=$[$a-$b]
val=$[$a*$b]
val=$[$a/$b]
5. 流程控制
1.条件语句
#!/bin/bash
a=3
b=5
if [ $a == $b ]
then
echo "a=b"
elif [ $a -lt $b ]
then
echo "a<b"
elif [ $a -gt $b ]
then
echo "a>b"
else
echo "error"
fi
2.case语句
#!/bin/bash
n=$1
case $n in
1)
echo "输入1"
;;
2)
echo "输入2"
;;
3)
echo "输入3"
;;
*)
echo "其他数"
esac
3. 循环结构
while循环
#!/bin/bash
total=0
num=0
while [ $num -lt 100 ]
do
total=$[$total+$num]
num=$[$num+1]
done
echo "total: $total"
for 循环
#!/bin/bash
list=(1 2 3 4 5 6 7 8 9)
for val in ${list[*]}
do
echo -n $val
done
4. 函数
add(){
val=`expr $1 + $2`
return $val
}
add 4 5
echo $?
echo "val: $val"
|