Shell脚本知识点

shell脚本

shell语言定义的变量,数据类型默认都是字符串类型
在定义数据类型时,不用主动声明该类型

执行sh

./xx.sh  # 使用“./”执行shell文件

基础语法

#! /bin/bash    # shebang,表示使用bash解释器,同(/bin/sh)

history  # 查看输入的历史命令
!!  # 执行上一次执行的命令
!3000 # 执行id为3000的命令
echo $HISTSIZE  # 输出最大记录历史命令数

a=1       # 定义一个值=1的变量a  *变量和值之间不能出现空格
echo $a   # 输出变量a的值
var=`ls`  # 反引号 会编译成liunx命令

name="zhangsan"
${变量}					# 返回变量值
> ${name}				# zhangsan
${#变量}				# 返回变量长度,字符长度
> ${#name} 				# 8
${变量:start} 			# 返回变量start数值之后的字符
> ${name:2}				
${变量:start:length}	# 提取start之后的lehgth限制的字符,字符串截取
> ${name:2:6}
${变量#word}			# 从变量开头删除最短匹配的word子串
> ${name#zhang}			# san
${变量##word}			# 删除最长的
> ${name##an}
${变量%word}			# 从后往前删
${变量%%word}			#
${变量/pattern/string}	# 替换第一个匹配的
${变量//pattern/string}	# 替换所有

shell逻辑运算

shell的一些基础命令,只支持整数的运算

echo $((7>8))  			# 双小括号运算0=false,1=true
echo $((12+10))			# 22

num=5
((num=num*3)) 			# 运算并赋值  15

####### if语句
if [ num>10 ]; then
	echo ok
else
	echo no
fi

if [ -f file ]   		# 如果文件存在
if [ -d ... ]   		# 如果目录存在
if [ -s file ]   		# 如果文件存在且非空
if [ -r file ]   		# 如果文件存在且可读
if [ -w file ]   		# 如果文件存在且可写
if [ -x file ]   		# 如果文件存在且可执行

if [ a -eq b ]   		# 如果a==b
if [ a -ne b ]   		# 如果a!=b
if [ a -ge b ]   		# 如果a>=b
if [ a -gt b ]   		# 如果a>b
if [ a -le b ]   		# 如果a<=b
if [ a -lt b ]   		# 如果a<b

if [ $a=$b ]   			# 如果字符串a==b
if [ $a!=$b ]   		# 如果字符串a!=b
if [ -n $a ]   			# 如果字符串a非空,返回0
if [ -z $a ]   			# 如果字符串a为空
if [ $a ]   			# 如果字符串a非空,返回0

if [ a -o b ]			# 逻辑或相当于||
if [ a -a b ]			# 逻辑于相当于&&

for循环

for var in i1,i2,i3
do
  echo ${var}
done


for dir in `ls`    # 遍历当前目录下所有文件及文件夹
do
  echo ${dir}
done

字符串拼接

a="100"
b="200"
c="$a$b"    # 100200
d="$a-$b"   # 100-200

特殊变量

#########参数变量
$0  # 获取shell脚本文件名,以及路径
$n  # 获取shell脚本的第n个参数
$#  # 获取执行的shell脚本后面的参数总个数
$*  # 获取shell脚本所有参数
$@  # 不加引号,效果同上,加引号,是接受所有参数为独立字符串

#########状态变量
$?  # 上一次命令执行状态 0正确, 非0失败
$$  # 当前shell脚本的进程号
$!  # 上衣次后台进程的pid
$_  # 再次执行上一次的命令,最后一个参数

bash基础内置命令

echo  	# 输出打印
eval 	# 执行多个命令
exec 	# 不创建子进程,执行后续命令,执行完后自动exit
export	# 
read 	# 
shift	# 

变量的作用域

本地变量,针对shell进程的变量
全局变量,针对shell及其所有子进程的变量
局部变量,针对shell函数中定义的变量
每次调用basn/sh解释器执行脚本,都会开启一个子shell,因此不保存当前shell中定义的变量
如果使用source 执行脚本,将保存定义的变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值