一,dash和bash解析器
在ubuntu默认是指向bin/dash解释器的,dash是阉割版的bash,其功能远没有bash强大和丰富.并且dash不支持let和i++等功能
解决办法:
sudo dpkg-reconfigure dash
二,脚本笔记
1.基本语法
#!bin/bash
#新服务器
#定义和输出变量
#内置变量
echo ---------------------------shell中的内置变量----------------------------
a=100
echo $a
echo "'$'PWD用来输出当前路径"
echo $PWD
echo "'$'0是文件名"
echo $0
echo "'$'i是外界传入的第i个参数"
echo "'$'1=$1,'$'2=$2"
echo "'$'*输出外界传入的所有参数"
echo "外界传入的参数是$*"
echo "$'#'表示外界传入参数的个数"
echo "外界传入的参数个数是$#"
#流程控制语句
#if语句
echo ---------------------------流程控制语句至之if----------------------------
if [ $a>0 ]
then
echo "TURE"
else
echo "FALSE"
fi
#expr操作预算符
echo ---------------------------------expr操作符------------------------------
a=12
b=20
echo `expr $a + $b`
#for循环
echo ---------------------------流程控制语句之for循环-------------------------
a=0
#注意for和(之间有空格
#for ((i=1;i<=100;i++))
for i in `seq 1 100`
do
a=`expr $a + $i`
done
echo 1到100的累加结果:$a
#while循环
echo ---------------------------流程控制语句之while循环------------------------
b=100
#注意while和(或[之间有空格
while (($b >= 0 ))
#while [ $b -gt 0 ]
do
let "b--"
echo "自减后的结果:$b"
done
#util循环
echo ---------------------------流程控制语句之util循环------------------------
c=0
until (( $c >= 10 ))
#until [ ! $c -lt 10 ]
do
echo $c
c=`expr $c + 1`
done
#switch case分支
echo ---------------------------流程控制语句之switch case分支------------------------
echo 请输入1到4之间的数字
read num
case $num in
1) echo 你输入的是1
;;
2) echo 你输入的是2
;;
3) echo 你输入的是3
;;
4) echo 你输入的是4
;;
*) echo 你输入的数字不在范围内
;;
esac
2.函数传参及脚本配合传参
#!bin/bash
function func ()
{
echo 我是一个函数
}
func
func1 ()
{
echo 可以不加function关键字
}
func1
func2 ()
{
echo 方法接收到的参数是$1
}
func2 123
func3 ()
{
echo 方法接收的参数是$1,外界传入的参数是$2
}
func3 123 $1