一、变量
# 普通变量
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,即执行结束. 语法为:
case 值 in
模式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
break 和continue
break命令允许跳出所有循环
continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
shell脚本编写基础
于 2023-09-11 16:05:44 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)