博客
关于我
linux--shell基础
阅读量:583 次
发布时间:2019-03-11

本文共 1732 字,大约阅读时间需要 5 分钟。

shell脚本

脚本语言简介

脚本语言相对于编译型语言而言,书写流程——编译——链接——运行的过程进行缩减。与编译型语言如C、C++、Java、C#相比,脚本语言的处理底层对象更为简单。脚本语言的运行通常是解释性语言,通过解释器将脚本程序读取并转换为内部形式进行执行。解释器本身通常也是一个编译型程序。

shell脚本

在Linux和Unix系统中,shell脚本是一种非常重要的脚本语言,在*nix领域应用广泛。通过shell脚本语言,可以以简洁的方式实现许多复杂的操作,这使得使用shell脚本成为处理文件和目录等事务的首选工具。

shell脚本优势

  • 语法和结构简单易学,适合快速上手
  • 学习和使用成本低,适合日常操作
  • 通常采用解释方式运行,无需编译
  • 程序开发效率优于运行效率,脚本语言的执行效率一般不如编译型语言

编写自己的第一个脚本

shell脚本的基本元素需要理解。shell脚本的 起始符 #! 或称为sha-bang符号,用于指定解释器路径。随后通常跟着的是解释器的位置。在shell脚本中,基本命令如sed和awk是常用的工具。命令格式通常包括命令名称、选项和参数。

脚本示例

以下是一个简单的Hello World示例:```bash#!/bin/bashecho "Hello World"exit 0```

执行脚本

  • 赋予权限后直接运行:`chmod u+x filename.sh`,然后运行`./filename.sh`
  • 通过bash或sh执行:`bash filename.sh` 或 `sh filename.sh`
  • 通过source或.命令运行:`source filename.sh` 或 `./ filename.sh`

练习

案例1:制作一个程序菜单

以下是一个简单的菜单脚本示例:```bash#!/bin/bashclearecho "*****************************************"echo "* \033[1;31m\t\tMenu\t\t\033[0m *"echo "*****************************************"echo "1.显示系统CPU信息和系统负载"echo "2.显示系统内存信息和交换空间"echo "3.显示文件系统挂载情况"echo "4.显示网络接口信息"echo "5.退出"

案例2:统计系统信息

以下是一个用于收集系统基本信息的脚本示例:```bash#!/bin/bashecho "……………………………………"echo "显示CPU信息:"echo $(cat /proc/cpuinfo | grep model name)echo "……………………………………"echo "系统负载!"echo $(uptime)echo "……………………………………"echo "显示交换空间:"echo $(free | grep wap)echo "……………………………………"echo "显示文件系统挂载情况:"echo $(df -hT | grep 'boot')echo "……………………………………"echo "显示网络接口信息:"echo $(ip addr show | grep inet)

案例3:环境变量管理

以下是一个用于管理环境变量的脚本示例:```bash#!/bin/bashecho "用户信息(用户ID):$USER"echo "用户ID(UID):$UID"echo "用户主目录(HOME):$HOME

案例4:数学计算示例

以下是一个简单的数学计算脚本示例:```bash#!/bin/bashvar1=10var2=3.14159265result=$(bc <<< "scale=10; $var1 * $var2")echo "计算结果:$result"

注意事项

  • 脚本必须以`#!/bin/bash`开头,并确保解释器路径正确
  • 代码缩进使用4个空格,保持一致性
  • 加上适当的注释以提高可读性
  • 命名要规范,变量名全大写,函数名全小写
  • 遇到复杂操作时,先在开发环境测试

转载地址:http://dpztz.baihongyu.com/

你可能感兴趣的文章
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>
mysql CONCAT()函数拼接有NULL
查看>>
multiprocessing.Manager 嵌套共享对象不适用于队列
查看>>
multiprocessing.pool.map 和带有两个参数的函数
查看>>
MYSQL CONCAT函数
查看>>
multiprocessing.Pool:map_async 和 imap 有什么区别?
查看>>
MySQL Connector/Net 句柄泄露
查看>>
multiprocessor(中)
查看>>
mysql CPU使用率过高的一次处理经历
查看>>
Multisim中555定时器使用技巧
查看>>
MySQL CRUD 数据表基础操作实战
查看>>
multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
查看>>