shell脚本.sh

#! /bin/bash
#


三种不同的执行方式


#1、./ a.sh 2、sh a.sh 3、source a.sh
#区别:前两者产生新进程 后者直接在当前bash中执行
#ping www.baidu.com 测试

# 简单的输出语句
echo 'hello world'

TODO: Shell变量


## 命名规则与c语言相同
## 局部变量、环境变量、shell变量

# 调用环境变量
echo $name
echo ${name}

# export定义环境变量 否则为局部变量 【在bash中定义】
export age=10

# 只读变量 【在bash中修改变量权限】
readonly age

# 删除变量 【不能删除只读变量】
unset name

TODO: Shell字符串


## 可以是单引号、双引号、也可不加引号

#单引号 原样输出 成对存在
echo 'hello world'

##双引号 可存在变量 可存在转义字符 如$
echo "HELLO"

#字符串的拼接 -- 双引号
name='world'
name1="hello, "$name"!"
name2="hello, ${name}!"
#echo $name1 $name2

#字符串的拼接 -- 单引号
name='world'
name1='hello, '$name'!'
name2='hello, ${name}!' #hello, ${name}!
#echo $name1 $name2

#字符串的长度
school="easthome"
echo ${#school} #显示长度:8
echo ${school:1:4} #截取长度:asth 表示从第1个单位开始取4个单位长度

TODO: Shell数组


## 支持一维数组(不支持多维数组) 并且没有限定数组的大小

# 定义数组:括号表示数组,数组元素用【空格】分隔
# 数组名=(值1 值2...值n)
favs=("a1" "a2" "a3")

# 读取数组 ${数组名[下标]} 【从0开始 值 >= 0】
fav=${favs[0]}

# 读取所有元素 下标值:@
echo ${favs[@]}

# 获取数组的长度
len1=${#favs[@]}
len2=${#favs[*]}

echo "favs[0]=$fav len1=$len1 len2=$len2"

TODO: Shell注释


# 单行注释:#
# 特殊的多行注释
:<<EOF
注释内容。。。
注释内容。。。
注释内容。。。
EOF
:<<!
注释内容。。。
注释内容。。。
注释内容。。。
!

TODO: Shell算数运算符


## expr表达式计算工具
a=10
b=20


算数运算符:

加减乘除取余【+ - * / %】
val=expr $a + $b
echo “a + b = $val”
# 也称算数运算符:== !=
if [ $a == $b ] #【[] 内侧都有空格】
then
echo “a 等于 b”
fi


#关系运算符只支持数字,不支持字符串,除非字符串的值是数字

关系运算符:

等于、不等于、大于、小于、大于等于、小于等于
# -eq -ne -gt -lt -ge -le
if [ $a -eq $b ]
then
echo “a 等于 b”
else
echo “a 不等于 b”
fi

布尔运算符:

!= -a且 -o或 !非
a=10
b=20
# 1
if [ $a == $b ]
then
echo “a == b”
else
echo “a != b”
fi
# 2
if [ $a -lt 50 -a $b -gt 20 ]
then
echo “a 小于 50 且 b 大于 20 : 返回 True”
else
echo “a 小于 50 且 b 大于 20 : 返回 False”
fi

逻辑运算符:

&& ||
a=10
b=20
if [[ $a -lt 100 && $b -gt 10 ]]
then
echo “a 小于 100 并 b 大于 10 :返回 true”
else
echo “返回 false”
fi

字符串运算符:

!= -z为0 -n不为0
a=“abc”
b=“efg”
#1
if [ $a = $b ]
then
echo “a 等于 b”
else
echo “a 不等于 b”
fi
#2
if [ -z $a ]
then
echo “长度为0”
else
echo “长度不为0”
fi
#3
if [ $a ]
then
echo “不为空”
else
echo “为空”
fi

文件测试运算符

r可读 -w可写 -x可执行 -f普通文件 -s是否空 -e 是否存在
file=“/home/u200/bash”
if [ -r $file ]
then
echo “可读”
else
echo “不可读”
fi

TODO: echo打印数据


## 用于字符串的输出

# 显示转义字符
echo "\"hello world\""

# 显示变量
name="wuhu"
echo "$name yeihu"

# 显示换行
echo -e "ok! \n"
echo "---1"

# 显示不换行
echo -e "ok! \c"
echo "---2"

# 显示结果定向至文件
echo "wuhu" > myfile

# 原样输出字符串
echo '$name\'

# 显示命令执行结果
echo `date`

TODO: test命令


## 用于检查条件是否成立,可以进行数值、字符和文件的测试
# 类似于 if
a=10
b=20
if test $[a] -eq $[b]
then
echo ‘两个数相等’
else
echo ‘两个数不相等’
fi


TODO: Shell流程控制

## if语句
a=10
b=20
if [ $a == $b ]
then
echo "a等于b"
elif [ $a -gt $b ]
then
echo "a大于b"
elif [ $a -lt $b ]
then
echo "a小于b"
else
echo "没有符合的条件"
fi

TODO: case 语句


## 多选择语句,可以匹配一个值与一个模式

echo '输入1~4之间的数字:'
#read num # 监测键盘的输入
num=1
case $num in
1) echo '模式1'
;;
2) echo '模式2'
;;
3) echo '模式3'
;;
*) echo '没有其选项'
;;
esac

TODO: for 循环


## 当变量值在列表里,for循环即执行一次所有命令,使用变量名获取列表中的当前取值
## 命令可为任何有效的shell命令和语句,in列表可以包含替换、字符串、文件名
## in列表是可选的,如果不用它,for循环使用命令行的位置参数

:<<EOF
for var in item1 item2 ...itemn
do
command1
command2
...
commandn
done
EOF
#1
for loop in 1 2 3 4
do
echo "The val is : $loop"
done
#2
for str in 'this is a str', 'hello world'
do
echo $str
done


TODO: while循环


## 用于不断执行一系列的命令,也用于从输入文件中读取数据;命令通常为测试条件

:<<EOF
while condition
do
command
done
EOF

#1
# bash let 命令,用于执行一个或多个表达式,变量计算中不需要加上$来表示变量
i=1
while(( $i<=5 ))
do
echo $i
let "i++"
done
#2
# 无限循环
:<<EOF
while ture
do
command
done
EOF


TODO: break


## 比如
:<<!
while :
do
echo -n “输入1到5之间的数字:”
read num
case $num in
1|2|3|4|5) echo “你输入的数字为 $num!”
;;
*) echo “输入错误游戏结束!”
break
;;
esac
done
!

TODO: continue


## 比如
:<<!
while :
do
echo -n “输入1到5之间的数字:”
read num
case $num in
1|2|3|4|5) echo “你输入的数字为 $num!”
;;
*) echo “输入错误!”
continue
;;
esac
done
!

TODO: shell函数


## 可以用户自定义函数,然后在shell脚本中可以随便调用
## 可以带function fun()定义,也可直接fun()定义,不带任何参数
## 参数返回,可以显示加:return返回,如果不加,将以最后一条命令作为运行结果,作为返回值
## return后跟数值n(0~255)


第一个函数


demofun(){
echo “This is my function!”
}
echo “函数start…”
demofun
echo “函数over!”

函数返回值


funwithReturn(){
# 求和
echo “输入第一个数字:”
read anum
echo “输入第二个数字:”
read bnum
return ( ( (( ((anum+$bnum))
}
# num=funwithReturn 或着
funwithReturn
# 函数返回值在调用该函数后通过 $? 来获得
echo “funwithReturn 返回值为 $?”

函数参数


funwithparam(){
echo “第一个参数 $1!”
echo “第二个参数 $2!”
echo “第十个参数 $10!” # 多位数要加上{}
echo “第十个参数 ${10}!”
echo “参数总数有 $# 个!”
echo “作为一个字符串输出所有参数 $*!”
}
funwithparam 1 2 3 4 5 6

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值