baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • 华仔聊技术

  • 业务设计

  • 场景设计

  • 运维

  • 安全

  • 面试

  • mac相关工具推荐

  • 开发工具

    • git安装后怎么做
    • git介绍
    • git常用命令
    • git三剑客
    • git标签详解
    • merge的方式
    • 记一次git rebase操作
    • 持续集成、持续交付、持续部署
    • 开机自启脚本方法
    • shell语法
      • 简介
      • 语法
        • 1. 基本命令
        • 2. 变量
        • 3. 条件语句
        • 4. 循环语句
        • 5. 函数
        • 6.数组
        • 7.输入输出重定向
        • 8.管道
        • 9.函数传参
        • 10.环境变量
    • 解决mac安装软件后显示已经被损坏
    • 不同序列化工具性能测试
    • JMH测试工具介绍
  • 人工智能

  • 推荐

  • 阅读

  • 工具

  • 计划

  • 产品

  • 云原生

  • go

  • QVM

  • 软件设计师

  • 极客时间

  • 单元测试

  • 其他
  • 开发工具
xugaoyi
2023-02-24
目录

shell语法

# 简介

Shell是一种脚本语言,用于在Unix和Linux操作系统上编写脚本程序。Shell可以让您通过命令行交互式地与操作系统进行交互,也可以通过编写脚本自动化许多任务。

在学习Shell编程时,首先要了解Shell脚本文件的结构和命名约定。Shell脚本文件通常以“.sh”为扩展名,并且必须在文件的开头加上以下“shebang”行:

#!/bin/bash
1

这行告诉操作系统,使用Bash作为解释器来执行这个脚本

# 语法

# 1. 基本命令

Shell中的命令通常是由一个命令名和一些参数组成。以下是一些常用的基本命令:

  • echo:将文本输出到标准输出设备(通常是终端)。
  • ls:列出目录中的文件和子目录。
  • cd:改变当前工作目录。
  • mkdir:创建一个新的目录。
  • touch:创建一个新的空文件或者更改现有文件的访问和修改时间。
  • rm:删除文件或目录。
  • cat:将文件的内容输出到标准输出设备。
  • grep:在文件中查找匹配的文本。
  • sed:使用正则表达式编辑文件中的文本。
  • awk:一种强大的文本处理工具。

# 2. 变量

在Shell中,可以使用变量来存储和操作数据。变量可以包含文本或数字,并且可以通过赋值操作来设置或更改变量的值。以下是一些基本变量操作:

  • 赋值变量:

    codename="John"
    age=25
    
    1
    2
  • 输出变量值:

    echo $name
    echo $age
    
    1
    2
  • 将变量作为命令参数使用:

    echo "My name is $name and I am $age years old."
    
    1

# 3. 条件语句

在Shell中,可以使用条件语句来根据不同的条件执行不同的操作。以下是一个简单的条件语句示例:

if [ $age -gt 18 ]
then
  echo "You are an adult."
else
  echo "You are a minor."
fi
1
2
3
4
5
6

此示例检查变量age的值是否大于18,如果是,则输出“You are an adult”,否则输出“You are a minor”。

#判断数字是否大于10
if [ $num -gt 10 ]; then
  echo "The number is greater than 10"
else
  echo "The number is less than or equal to 10"
fi
1
2
3
4
5
6

此示例判断变量num的值是否大于10,并根据判断结果输出相应的信息。

# 4. 循环语句

在Shell中,可以使用循环语句来重复执行一组操作。以下是一个简单的循环语句示例:

for i in {1..5}
do
  echo "Iteration $i"
done
1
2
3
4

此示例使用for循环执行5次迭代,输出“Iteration 1”

在Shell中,可以使用循环语句来重复执行某些操作。以下是一些常用的循环语句:

  • for循环:用于遍历数组、列表等数据结构。

    # 遍历数组中的所有元素
    for i in "${array[@]}"; do
      echo $i
    done
    
    1
    2
    3
    4
  • while循环:用于根据条件重复执行某些操作。

    # 循环直到变量num的值等于10
    while [ $num -ne 10 ]; do
      echo $num
      num=$((num + 1))
    done
    
    1
    2
    3
    4
    5

# 5. 函数

在Shell中,可以使用函数来组织和重用代码。以下是一个简单的函数示例:

#定义函数
function say_hello() {
  echo "Hello, world!"
}

# 调用函数
say_hello
1
2
3
4
5
6
7

此示例定义了一个名为say_hello的函数,该函数输出“Hello, world!”。然后,我们调用该函数,输出结果为“Hello, world!”。

# 6.数组

在Shell中,可以使用数组来存储一系列相关的数据。以下是一个简单的数组示例:

# 定义数组
names=("Alice" "Bob" "Charlie" "David")

# 输出数组元素
echo ${names[0]}    # 输出 "Alice"
echo ${names[1]}    # 输出 "Bob"
echo ${names[2]}    # 输出 "Charlie"
echo ${names[3]}    # 输出 "David"

# 输出数组长度
echo ${#names[@]}   # 输出 4
1
2
3
4
5
6
7
8
9
10
11

此示例定义了一个名为names的数组,该数组包含4个元素。我们可以使用${names[index]}语法来访问数组中的特定元素,${#names[@]}可以输出数组长度。

# 7.输入输出重定向

在Shell中,可以使用输入输出重定向符号<和>来控制标准输入和标准输出的流向。以下是一些常用的输入输出重定向操作:

  • 将命令输出重定向到文件:

    echo "Hello, world!" > output.txt
    
    1

    此示例将“Hello, world!”输出到名为output.txt的文件中。如果文件不存在,则创建一个新文件。

  • 将文件内容输入到命令中:

    grep "keyword" < input.txt
    
    1

    此示例从名为input.txt的文件中读取内容,并将其传递给grep命令,以查找匹配的关键字。

# 8.管道

在Shell中,可以使用管道符号|将多个命令链接在一起,使其相互作用。以下是一个简单的管道示例:

# 输出目录中所有的PNG文件,并使用sed命令将".png"替换为".jpg"
ls *.png | sed 's/.png$/.jpg/'
1
2

此示例将ls *.png的输出作为输入传递给sed 's/.png$/.jpg/',以替换所有PNG文件的扩展名为JPG。

# 9.函数传参

在Shell中,可以将参数传递给函数,以便函数可以处理不同的数据。以下是一个简单的函数传参示例:

### 定义函数
function say_hello() {
  echo "Hello, $1!"
}

### 调用函数并传递参数
say_hello "Alice"    # 输出 "Hello, Alice!"
say_hello "Bob"      # 输出 "Hello, Bob!"
1
2
3
4
5
6
7
8

此示例定义了一个名为say_hello的函数,并在调用函数时将参数传递给它。

# 10.环境变量

在Shell中,可以使用环境变量来存储和管理系统级别的配置信息。以下是一些常用的环境变量:

  • $HOME:当前用户的主目录路径。
  • $PATH:系统搜索可执行文件的路径列表。
  • $USER:当前用户的用户名。
  • $SHELL:当前使用的Shell解释器路径。
编辑 (opens new window)
上次更新: 2024/02/22, 14:03:19
开机自启脚本方法
解决mac安装软件后显示已经被损坏

← 开机自启脚本方法 解决mac安装软件后显示已经被损坏→

最近更新
01
spark基础
02-22
02
mysql读写分离和分库分表
02-22
03
数据库迁移
02-22
更多文章>
Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式