shell常用命令(变量、运算符、流程控制及权限)

一、执行shell脚本

1.新建并进入sh 文档
vi test.sh
在这里插入图片描述
2.文档编辑格式 首行: #!/bin/bash(#表示注释 !后面表示默认执行的语言)
在这里插入图片描述
3.增加执行权限chmod +x test.sh
在这里插入图片描述
4.执行shell脚本的三种方式:
方法一:./test.sh
方法二:sh test.sh
方法三: /bin/bash test.sh(常用场景:环境配置错误的时候)
在这里插入图片描述

二、变量的声明

1.变量的命名规范:

  • 变量名和等号之间不能有空格
  • 命名只能使用英文字母,数字和下划线,
  • 首个字符不能以数字开头 中间不能有空格,可以使用下划线(_)
  • 不能使用标点符号
  • 不能使用bash里的关键字(可用help命令查看保留关键字)

2.变量的类型

  • 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  • 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
  • shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

3.变量的声明(注意:变量名外面的花括号是可选的,加{}可以有利于变量的区分)

abc=123   #不需要声明变量
aaa=$JAVA_PATH  #环境变量可以直接引用,如果不使用$ 打印aaa将会出现字符串JAVA_HOME

在这里插入图片描述
4.shell字符串(单引号和双引号的区别)
①单引号

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。

②双引号

  • 双引号里可以有变量
  • 双引号里可以出现转义字符
name="shell"
#双引号拼接
str="hello, "$name" !"
str01="hello, ${name} !"
echo $str  $str01      #结果为   hello, shell ! hello, shell !
#单引号拼接
str02='hello, '$name' !'
str03='hello, ${name} !'
echo $str02  $str03      #结果为   hello, shell ! hello,  ${shell} !

5.替换

#!/bin/bash
abc=123
aaa=$java_home
abc=${abc/'1'/'h'}  表示在abc变量中找到1就替换为h 
echo ${aaa} ${abc}

在这里插入图片描述

6.将命令的结果分配给变量(以pwd为例)

path=`pwd`(注意:这里是反引号,不是单引号)
echo ${path}

在这里插入图片描述
7.(()) 双括号表示执行 $[]也可以表示执行

方法一:((c=$a+$a*2))
方法二:d=$[$a+$b*2]

在这里插入图片描述在这里插入图片描述

8.预定义变量($? 状态为0表示成功执行

选项 说明
$# 命令行参数或位置参数的数量
$? 最近一次执行的命令或shell脚本的出口状态
$0 命令本身
$* 表示所有的位置参数,其值是所有位置参数的值
$$ 变量是shell脚本里面的进程ID。Shell脚本经常使用 $$ 变量组织临时文件名,确保文件名的唯一性
  1. 位置变量
$n:
$0代表命令本身,$1-$9代表顺序参数编号,大于10的话使用括号,如${10} 

在这里插入图片描述
在这里插入图片描述
注意:bash shell脚本中变量无法存储布尔值,布尔值只能用于条件判断(注意:条件判断中非空都为true)

三、运算符

1.shell数值关系运算符

选项 说明
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 小于或等于
-ge 大于或等于

2.shell逻辑运算符

选项 说明
-a或&& 逻辑与
-o或|| 逻辑或
! 逻辑否

3.shell字符串运算符

选项 说明
= 等于
!= 不等于
-z 判断是否为空

4.shell文件运算符

选项 说明
-d 判断是否为目录
-e 判断目录或文件是否存在
-f 判断是否为文件
-r 判断文件或目录针对当前用户是否可读
-w 判断文件或目录针对当前用户是否可写
-x 判断文件或目录针对当前用户是否可执行

四、流程控制

  1. if test
    test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。
num1=123
num2=123
if test  $num1 -eq $num2
then
    echo '两个数相等!'
else
    echo '两个数不相等!'
fi

在这里插入图片描述
2.if语句

if  条件
	then 
fi 

3.if-else 语句

if  条件
	then 
	...
	else 
	...
fi

4.if-else-if语句:

if   条件
	then
	...
		elif   条件
		then
			...
	else
	...
fi

5.for循环

for((a=1;a<=5;a++))
	do 
	...
	done

6.增强for循环

for a in parm1 parm2 parm3 ...
	do 
	...
	done

7.while循环

a=1
while [ a  <= 5 ]
	do
	...
	let “a++”
	done

8.case判断

case 变量 in:
值1)
	...
	;;         #相当于break
值2)
	...
	;;
*)              #相当于default
	...
	;;
esac

猜你喜欢

转载自blog.csdn.net/weixin_43992185/article/details/106907716