当前位置: 首页 > news >正文

Shell编程快速入门

Shell编程快速入门

脚本格式要求

  • 脚本以#!/bin/bash开头
  • 脚本需要有可执行权限

脚本的常用执行方式

  • 方式1:输入脚本的绝对路径或相对路径
  • 方式2:sh+脚本

Shell的变量

Shell变量介绍

  • Linux Shell中的变量分为系统变量和用户自定义变量
    • 系统变量:$HOME,$PWD,$SHELL,$USER等等
    • 显示当前shell中所有变量:set

Shell变量的定义

  • 定义变量:变量=值
  • 撤销变量:unset 变量
  • 声明静态变量:readonly 变量

Shell变量的定义规则

  • 变量名称可以由字母、数字和下划线组成,但是不能以数字开头
  • 等号两侧不能有空格
  • 变量名称一般习惯为大写

Shell设置环境变量

基本语法

  • export 变量名=变量值 :将shell变量输出为环境变量
  • source 配置文件:让修改后的配置信息立即生效
  • echo $变量名:查询环境变量的值

Shell注释规则

  • 单行注释#,例如# 这是一个单行注释

  • 多行注释:<<! 内容 !

    • :<<!
      这是一个多行注释
      !
      

Shell位置参数变量

介绍

当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用位置参数变量。

比如:./myshell.sh 100 200这就是一个执行shell的命令行,可以从myshell脚本中获取到参数信息

基本语法

  • $n:n为数字,
    • $0代表命令本身
    • $1-$9代表第一到第九个参数
    • 十以上的参数需要用大括号包含,如${10}
  • $*:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
  • $@:这个变量也代表命令行中原有的参数,不过区分对待
  • $#:这个变量代表命令行中所有参数的个数

Shell预定义变量

基本介绍

  • 就是shell设计者实现已经定义好的变量,可以直接在shell脚本中使用

基本语法

  • $$:当前进程的进程号PID
  • $!:后天运行的最后一个进程的进程号PID
  • $?:最后一次执行的命令的返回状态。
    • 如果这个变量的值为0,证明上一个命令成功执行
    • 如果这个变量的值为非0,则证明上一个命令执行不正确

运算符

基本语法

  • "$((运算式))""$[运算式]"或者expr m + n,其中m和n都是数字
  • 注意expr运算符间要有空格,如果希望将expr的结果赋给某个变量,使用反引号``
  • expr m - n
  • expr \*,/,% 乘,除,取余

条件判断

基本语法

  • [ condition ]注意condition前后要有空格
    • 非空返回true,可以使用$?验证

判断语句

  • 两个整数的比较

    • -lt:小于

    • -le:小于等于

    • -eq:等于

    • -gt:大于

    • -ge:大于等于

    • -ne:不等于

  • 按照文件权限进行判断

    • -r:由读的权限
    • -w:有写的权限
    • -x:有执行的权限
  • 按照文件类型进行判断

    • -f:文件存在并且是一个常规的文件
    • -e:文件存在
    • -d:文件存在并是一个目录

read读取控制台输入

基本语法

  • read(选项)(参数)
  • 选项
    • -p:指定读取值时的提示符
    • -t:指定读取值时等待的时间(秒),如果没有在指定时间内输入,就不要等待了
  • 参数
    • 变量:指定读取值的变量名
http://www.lryc.cn/news/113619.html

相关文章:

  • wpf 3d 坐标系和基本三角形复习
  • 如何安全变更亚马逊收款账户?
  • 大数据面试题:Hadoop中的几个进程和作用
  • 题解:ABC276D - Divide by 2 or 3
  • 后台管理系统
  • C++数据结构之平衡二叉搜索树(一)——AVL的实现(zig与zag/左右双旋/3+4重构)
  • 静态库和动态库
  • 用于Voronoi图构建的Fortune算法的C++实现
  • 笔记汇总 | 斯坦福 CS229 机器学习
  • git 版本管理工具 学习笔记
  • Bean基本注解开发和Bean依赖注入注解开发
  • 使用IIS服务器搭建一个网站
  • HCIP 三层交换机
  • 利用python 进行数据分析(第三版)第二章小结
  • 【ASP.NET MVC】使用动软(四)(12)
  • 【web逆向】全报文加密及其登录流程的分析案例
  • MyBatis枚举映射类讨论
  • 微信开发之朋友圈自动点赞的技术实现
  • Linux命令200例:sed对文本进行修改、替换和删除等操作的强大工具(常用)
  • python 合并多个excel文件
  • 【Docker】性能测试监控平台搭建:InfluxDB+Grafana+Jmeter+cAdvisor
  • wordpress日主题Ripro9.0最新二开修正源码下载+美化包和插件
  • fib Model Code史海拾贝
  • 6.7.tensorRT高级(1)-使用onnxruntime进行onnx模型推理过程
  • 360未来安全研究院笔试题
  • Linux SSH 远程连接主机,并执行命令
  • FAST协议详解1 不同数据类型的编码与解码
  • 黑马大数据学习笔记5-案例
  • 网络编程——TCP/IP协议族(IP协议、TCP协议和UDP协议……)
  • Oracle SQL存储过程能够返回表吗