文章目录

  • 一、执行shell脚本
  • 二、变量的声明
  • 三、运算符
  • 四、流程控制


一、执行shell脚本

1.新建并进入sh 文档

vi test.sh

shell function 命令行 shell命令执行_shell


2.文档编辑格式 首行: #!/bin/bash(#表示注释 !后面表示默认执行的语言)

shell function 命令行 shell命令执行_linux_02


3.增加执行权限chmod +x test.sh

shell function 命令行 shell命令执行_单引号_03


4.执行shell脚本的三种方式:

方法一:./test.sh

方法二:sh test.sh

方法三: /bin/bash test.sh(常用场景:环境配置错误的时候)

shell function 命令行 shell命令执行_linux_04

二、变量的声明

1.变量的命名规范:

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

2.变量的类型

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

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

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

shell function 命令行 shell命令执行_shell脚本_05


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}

shell function 命令行 shell命令执行_shell脚本_06

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

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

shell function 命令行 shell命令执行_shell function 命令行_07


7.(()) 双括号表示执行 $[]也可以表示执行

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

shell function 命令行 shell命令执行_shell脚本_08

shell function 命令行 shell命令执行_shell脚本_09

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

选项

说明

$#

命令行参数或位置参数的数量

$?

最近一次执行的命令或shell脚本的出口状态

$0

命令本身

$*

表示所有的位置参数,其值是所有位置参数的值

$$

变量是shell脚本里面的进程ID。Shell脚本经常使用 $$ 变量组织临时文件名,确保文件名的唯一性

  1. 位置变量
$n:
$0代表命令本身,$1-$9代表顺序参数编号,大于10的话使用括号,如${10}

shell function 命令行 shell命令执行_linux_10


shell function 命令行 shell命令执行_shell_11


注意: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

shell function 命令行 shell命令执行_shell function 命令行_12


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