linux shell脚本,入门到实战详解

文章介绍了Shell脚本的基本概念,包括它是如何作为Linux命令的集合来实现自动化任务的。讨论了Shell脚本的命名规范,以#.bin/bash开头的必要性,以及如何执行.sh文件。此外,还讲解了Shell脚本中的变量、参数传递、数组(包括关联数组)的使用,以及基本的运算符。最后,提到了一些Linux命令如find、grep、tar以及防火墙管理的相关操作。
摘要由CSDN通过智能技术生成

1. 基本介绍

shell脚本就是一些命令的集合,shell 本质上是 linux 命令,一条一条命令组合在一起,实现某一个目的,就变成了shell脚本。它从一定程度上减轻了工作量,提高了工作效率。

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

shell他就是一个脚本命令,当运行该脚本命令时,可以与Linux系统底层进行交互

shell 编程有哪些注意事项

  • shell 命名:Shell脚本名称命名一般为英文、大写、小写,后缀以.sh 结尾。
  • 不能使用特殊符号、空格。
  • 见闻之意,名称要写的一眼可以看出功能。
  • shell 编程 首行需要 #!/bin/bash 开头。
  • shell 脚本变量不能以数字、特殊符号开头,可以使用下划线—,但不能用破折号 - 。

 2. shell脚本

 #!/bin/bash echo "文件开头代表:该文件使用的是bash语法"

#!/bin/bash
echo "Hello World !"

必须以#!/bin/bash开头

echo 输出语句

 执行: ./脚本文件名.sh

注意: 权限不足

 

 

 2.1、运行.sh文件

方法一:当前文件执行.sh 文件

# 文件必须含有x执行权限 [文件赋x权限:chmod u+x hello.sh]
./test.sh

# 文件可以没有x权限
sh test.sh

方法二:绝对路径执行.sh 文件

/home/test/test.sh

./home/test/test.sh

sh /home/test.test.sh 

查看运行过程 sh -x test.sh

3.shell脚本编写

3.1 Shell 变量

 

 

区别:shell的变量和java的变量区别: 无需添加数据类型!

3.2 Shell 传递参数

当执行shell脚本时,可以传递参数。 在shell脚本中使用$n接受传递的参数。n:表示数字1-∞  

 

 

 3.3 Shell 数组

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。

与大部分编程语言类似,数组元素的下标由 0 开始

语法: array_name=(value1 value2 ... valuen)

注意: Shell 数组用括号来表示,元素用"空格"符号分割开

 

注意: 如果直接引用数组名而没有使用下标默认下标0

3.4 关联数组

理解为java中map.

关联数组使用 declare 命令来声明,语法格式如下:

declare -A array_name=([k]=v [k]=v [k]=v)

${arr_name[k]}

使用*表示所有key对应的值

3.6 Shell 基本运算符

  • 算数运算符

  • 关系运算符

  • 布尔运算符

  • 字符串运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

具体可参考:  Shell 流程控制 | 菜鸟教程 (runoob.com)icon-default.png?t=N5K3https://www.runoob.com/linux/linux-shell-process-control.html回顾:

1. find 目录 -name 名字: 在指定目录下搜索指定的文件
2. grep '内容' 文件名: 在指定文件中搜索指定的内容
3. tar [-zxvf 压缩文件 -C 目录名 |-zcvf 压缩后文件名 被压缩的目录] 
4. 安装JDK环境  安装Tomcat   安装Mysql
5. 设计到防火墙问题:
     1.查看防火墙状态 systemctl status firewalld
     2.开启|关闭|重启|禁用防火墙: systemctl start|stop|restart|disable firewalld
     3.端口开发|移除: 
     firewall-cmd --add-port|remove-port=端口号/tcp --zone=public --permanent
     4.查看放行的端口:
     firewall-cmd --list-port
6. 查看运行的进程:
   ps -ef | grep 进程名
   kill -9 进程号

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值