shell基础

一、变量
# 普通变量
a="Linux"
echo $a,显示“Linux”
# 删除变量
unset a
echo $s,显示为空
二、字符串
# 字符串可以用单引号,也可以用双引号,也可以不用引号
a='linux'
b="python"
单引号特点:
1.单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
2.单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
3.双引号里可以有变量; 双引号里可以出现转义字符
# 字符串可以拼接
a="Linux"
b="Python"
c=" $a$b"
echo $c
#获取字符串长度
a="Linux"
b="Python"
echo ${#a}
三、Shell数组
1.Shell 数组用括号来表示,元素用空格符号分割开
a=(a b c d)
echo ${a[0]}
echo ${a[1]}
echo ${a[2]}
echo ${a[3]}
2.获取数组中所有元素
echo "数组元素依次如下:${a[@]}"
echo "数组元素依次如下:${a[*]}"
3.获取数组长度
echo "数组元素个数为:${#a[@]}"
echo "数组元素个数为:${#a[*]}"
四、运算符
+ - * / %(取余)=(赋值)==(相等)!=(不相等)
条件表达式放到括号之间,并且要有空格。写成:[ $a == $b ]
a=10
b=20
 
val=`expr $a + $b`
echo "a + b : $val"
 
val=`expr $a - $b`
echo "a - b : $val"
 
val=`expr $a \* $b`
echo "a * b : $val"
 
val=`expr $b / $a`
echo "b / a : $val"
 
val=`expr $b % $a`
echo "b % a : $val"
 
if [ $a == $b ]
then
   echo "a 等于 b"
fi
if [ $a != $b ]
then
   echo "a 不等于 b"
fi
五、显示结果重定向至文件
command > file  将输出重定向到 file。
command >> file 将输出以追加的方式重定向到 file。
覆盖之前内容:echo "hello world" >test1.sh
追加:echo "hello world" >>test7.sh
六、数值测试
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真
num1=20
num2=20
if test $[num1] -eq $[num2]
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi
七、字符串测试
=   等于则为真
!=  不相等则为真
-z 字符串  字符串的长度为零则为真
-n 字符串  字符串的长度不为零则为真
#!/bin/bash
num1="Linux"
num2="Linux"
if test $num1 = $num2
then
    echo '两个字符串相等!'
else
    echo '两个字符串不相等!'
fi
八、控制流
1.if 判断
命令格式:
if condition
then
    command1 
    command2
    ...
    commandN 
fi
举例:
a=5
b=6
if test [$a==$b]
then
	echo '等于'
elif [ $a -gt $b ]
then
	echo "a 大于 b"
elif [ $a -lt $b ]
then
	echo "a 小于 b"
else
	echo "没有符合的条件"
fi
2.for 循环
命令格式:
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done
举例:
echo "输入一个数:"
read num
for ((  i=1;i<=$num;i++  ))
do
   for ((  j=1;j<=$num;j++  ))
   do
      [  $j  -le  $i  ]  &&  echo -n "${i}*${j}=$((i*j))      "    #判断j是否小于i,当
j大于i时不输出,输出不换行,末尾加一个制表符
   done
   echo ""           #输出一个换行符                
done
3.while 循环
命令格式:
while condition
do
    command
done
举例:
int=1
while(( $int<=6 ))
do
    echo $int
    let "int++"
done
4.until 循环
命令格式:
until condition
do
    command
done
举例:
a=0
 
until [ ! $a -lt 6 ]
do
   echo $a
   a=`expr $a + 1`
done
5.case ... esac
case ... esac 为多选择语句,与C语言中的 switch ... case 类似,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束. 语法为:
casein
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac
举例:
echo '输入 1 到 4 之间的数字:'
echo '你输入的数字为:'
read a
case $a in
    1)  echo '你选择了 1'
    ;;
    2)  echo '你选择了 2'
    ;;
    3)  echo '你选择了 3'
    ;;
    4)  echo '你选择了 4'
    ;;
    *)  echo '你没有输入 1 到 4 之间的数字'
    ;;
esac

breakcontinue
break命令允许跳出所有循环
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。







你可能感兴趣的:(linux,运维,服务器)