shell脚本语言bash基础语法学习(echo、数组、基本运算符、流程控制)

一 echo

1.显示普通字符

echo "jack 身高 188"
#输出结果:jack 身高 188

2.显示转义字符

echo " \" jack 身高 188 \" "
#输出结果: " jack 身高 188 "

3.打印变量

name="Jack"
echo "${name} 身高 188"
#输出结果:jack 身高 188

4.开启转义字符并换行 -e

echo -e "jack\n身高 188"
echo "好高啊"
#输出结果:
jack
身高 188
好高啊

5.开启转移字符结尾不换行 \c

echo -e "jack\n身高 188\c"
echo "好高啊"
#输出结果:
jack
身高 188好高啊

6.打印系统时间(单引号)
echo `date`

7.退出命令exit

echo "第一句话"
exit
echo "第二句话"
#结果:第二句打印不会执行

二 数组

1 定义方式

方式一:直接赋值
array=("1" "2" "3" 4)
方式二:先创建再赋值

array2=()
array2[0]="5"
array2[1]="6"
array2[2]="7"
array2[3]=8

2 打印数组

1.直接打印数组变量,默认是打印第一个元素
echo $array
2.根据下标打印
echo ${array2[3]}
3.打印整个数组

# #打印数组-结果拆分多个字符串
 echo ${array[@]}
# #打印数组-结果拼成一个字符串
 echo ${array[*]}

4.获取数组长度#
echo "数组的长度:${#array[@]}"


三 基本运算

  1. 表达式expr
  2. 注意是``内操作
  3. 惩罚 * 前面要 \ 转义
num1=100
num2=50
# 加
plus=`expr $num1 + $num2`
# 减
minus=`expr $num1 - $num2`
# 乘 *前面要转义
cheng=`expr $num1 \* $num2`
# 除
#chu=`expr $num1 / $num2`
# 还有一种常用写法
chu=$[ $num1 / $num2 ]
# 模
mo=`expr $num1 % $num2`
# 赋值=
fuzhi=$num2
# ==
if [ $num1 == $num2 ]
then  
    echo "num1 等于 num2"
else
    echo "num1 不等于 num2"
fi
echo "加:$plus 减:$minus 乘:$cheng 除:$chu 模以:$mo 赋值变量:$fuzhi"

#运行结果:
#num1 不等于 num2
#加:150 减:50 乘:5000 除:2 模以:0 赋值变量:50


四 关系运算符号

-开头加上首字符缩写
shell脚本语言bash基础语法学习(echo、数组、基本运算符、流程控制)_第1张图片

  • 大于等于-ge(greater、equal)举例:
num1=100
num2=200
if [ $num1 -ge $num2 ]
then  
echo "num1 大于等于 num2"
else
echo "num1 不大于等于 num2"
fi
#结果:num1 不大于等于 num2

五 布尔运算符

-开头加上首字母
shell脚本语言bash基础语法学习(echo、数组、基本运算符、流程控制)_第2张图片

  • !非运算
num1=100
num2=200
if [ $num1 != $num2 ]
then
echo "num1不等于num2"
else
echo "num1等于num2"
fi
#结果:num1不等于num2
  • 或运算 -o (or)
if [ $num1 -gt 0 -o $num2 -lt 0 ]
then
echo "条件成立"
else
echo "条件不成立"
fi
#结果:条件成立
  • 与运算 -a (and)
if [ $num1 -gt 0 -a $num2 -lt 0 ]
then
echo "条件成立"
else
echo "条件不成立"
fi
#结果:条件不成立

六 逻辑运算符

在这里插入图片描述
注意:两种不同的书写方式
示例:
||

num1=100
num2=200
if [ $num1 -ge 100 ] || [ $num2 -lt 200 ]
then
echo "逻辑或关系成立"
else
echo "逻辑或关系不成立"
fi
#结果:逻辑或关系成立

&&

num1=100
num2=200
if [[ $num1 -eq 100 && $num2 -ne 200 ]]
then
echo "逻辑与关系成立"
else
echo "逻辑与关系不成立"
fi
#结果:逻辑与关系不成立

七 字符串运算符

1.判断字符串相等

string="111"
if [ $string = "111" ]  #判断不等用 !=
then
echo "sting等于111"
else
echo "string不等于111"
fi
#结果:sting等于111

2.判断字符串是否有值

string="111"
if [ $string ]
then
echo "字符串不为空"
else
echo "字符串为空"
fi
#结果:字符串不为空

3.判断字符串长度是否为0, 为0返回true

string="111"
if [ -z "$string" ]
then
echo "字符串长度为0"
else
echo "字符串长度不为0"
fi
#结果:字符串长度不为0

4.判断字符串长度是否不为0, 不为零返回true
注意:$string要用" "括起来,不然判断不准!

string="111"
if [ -n "$string" ]
then
echo "字符串长度不为0"
else
echo "字符串长度为0"
fi
#结果:字符串长度不为0

八 测试文件运算符

file="/Users/yangyujing/Documents/bash练习/basic.sh"
if [ -d $file ]
then
echo "这是一个目录"
else
echo "这不是一个目录"
fi

if [ -r $file ]
then
echo "可读"
else
echo "不可读"
fi

if [ -w $file ]
then
echo "可写"
else
echo "不可写"
fi

if [ -x $file ]
then
echo "可执行"
else
echo "不可执行"
fi

if [ -e $file ]
then
echo "文件存在"
else
echo "文件不存在"
fi

if [ -f $file ]
then
echo "普通文件"
else
echo "目录或系统文件"
fi

if [ -s $file ]
then
echo "文件有内容"
else
echo "文件没有内容"
fi

#结果:
#这不是一个目录
#可读
#可写
#可执行
#文件存在
#普通文件
#文件有内容

九 流程控制

1.条件语句 if else

示例:

num1=100
if [ $num1 -lt 100 ]
then
    echo "条件1成立"
elif [ $num1 -ge 100 ]
then
    echo "条件2成立"
else
    echo "两个条件都不成立"
fi
#结果: 条件2成立
2.循环 while

语法:

for 变量名 in item1 item2 item3 …
do
	代码
done

示例1:

for name in "jack" "rose" "jordan"
do 
    echo $name
done 

for string in i don\`t konw
do 
    echo $string
done

示例2: 循环遍历变量

#遍历数组
array=("111" "222" "333")
for num in ${array[@]}
do
    echo $num
done

#遍历字符串
string="i don\`t konw"
for str in $string
do
    echo $str
done

示例3:读取目录下文件名称(*通配符)

file="/Users/yangyujing/Desktop/*"
for filename in $file
do
    echo $filename
done

示例4:变量控制for循环

for ((a=0; a<5; a++))
do
    echo $a 
done 
3.while循环

语法:

while(条件)
do
  代码
done

示例:

num=10
while (($num >0))
do
    num=`expr $num - 1`
    echo $num
done

无限循环

while true
do
echo "无限循环"
done
4.case esac
num=2
case $num in
1)
    echo "1"
;;
2)
    echo "2"
;;
3)
    echo "3"
;;
esac
#结果: 2

你可能感兴趣的:(shell脚本bash学习)