首页 > 系统相关 >Linux_3 shell语法

Linux_3 shell语法

时间:2023-12-09 22:33:08浏览次数:46  
标签:acs shell name echo 语法 9e0ebfcd82d7 Linux yxc 变量

1 概论

shell是我们通过命令行与操作系统沟通的语言。

shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。
AC Terminal中的命令行可以看成是一个“shell脚本在逐行执行”。

  • Linux中常见的shell脚本有很多种,常见的有:

    • Bourne Shell(/usr/bin/sh/bin/sh)
    • Bourne Again Shell(/bin/bash)
    • C Shell(/usr/bin/csh)
    • K Shell(/usr/bin/ksh)
    • zsh
  • Linux系统中一般默认使用bash,所以接下来讲解bash中的语法。

  1. 文件开头需要写#! /bin/bash,指明bash为脚本解释器

  2. 脚本示例
    新建一个test.sh文件,内容如下:

    #! /bin/bash
    echo "Hello World!"
    
  3. 运行方式

  • 作为可执行文件
acs@9e0ebfcd82d7:~$ chmod +x test.sh  # 使脚本具有可执行权限
acs@9e0ebfcd82d7:~$ ./test.sh  # 当前路径下执行
Hello World!  # 脚本输出
acs@9e0ebfcd82d7:~$ /home/acs/test.sh  # 绝对路径下执行
Hello World!  # 脚本输出
acs@9e0ebfcd82d7:~$ ~/test.sh  # 家目录路径下执行
Hello World!  # 脚本输出
  • 用解释器执行
acs@9e0ebfcd82d7:~$ bash test.sh
Hello World!  # 脚本输出

2 注释

2.1 单行注释

每行中#之后的内容均是注释。

# 这是一行注释

echo 'Hello World'  #  这也是注释

2.2 单行注释多行注释

格式:

:<<EOF
第一行注释
第二行注释
第三行注释
EOF
其中EOF可以换成其它任意字符串。例如:

:<<abc
第一行注释
第二行注释
第三行注释
abc

:<<!
第一行注释
第二行注释
第三行注释
!

多行注释很像不开心的长胡子老爷爷,后面字符串的内容可以想象成这个老爷爷在叹气,为什么叹气都可以。

3 变量

3.1 定义变量

定义变量,不需要加$符号,例如:

name1='yxc'  # 单引号定义字符串
name2="yxc"  # 双引号定义字符串
name3=yxc    # 也可以不加引号,同样表示字符串

3.2 使用变量

使用变量,需要加上$符号,或者${}符号。花括号是可选的,主要为了帮助解释器识别变量边界。

name=yxc
echo $name  # 输出yxc
echo ${name}  # 输出yxc
echo ${name}acwing  # 输出yxcacwing

3.3 只读变量

使用readonly或者declare可以将变量变为只读。

name=yxc
readonly name
declare -r name  # 两种写法均可

name=abc  # 会报错,因为此时name只读

3.4 删除变量

unset可以删除变量。

name=yxc
unset name
echo $name  # 输出空行

3.5 变量类型

3.5.1 自定义变量(局部变量)

子进程不能访问的变量

3.5.2 环境变量(全局变量)

子进程可以访问的变量

3.5.3 自定义变量改成环境变量

acs@9e0ebfcd82d7:~$ name=yxc  # 定义变量
acs@9e0ebfcd82d7:~$ export name  # 第一种方法
acs@9e0ebfcd82d7:~$ declare -x name  # 第二种方法

3.5.4 环境变量改为自定义变量

acs@9e0ebfcd82d7:~$ export name=yxc  # 定义环境变量
acs@9e0ebfcd82d7:~$ declare +x name  # 改为自定义变量

3.6 字符串

字符串可以用单引号,也可以用双引号,也可以不用引号。

3.6.1 单引号与双引号的区别:

单引号中的内容会原样输出,不会执行、不会取变量;
双引号中的内容可以执行、可以取变量;
单原双变

name=yxc  # 不用引号
echo 'hello, $name \"hh\"'  # 单引号字符串,输出 hello, $name \"hh\"
echo "hello, $name \"hh\""  # 双引号字符串,输出 hello, yxc "hh"

3.6.1 获取字符串长度

name="yxc"
echo ${#name}  # 输出3

3.6.2 提取子串

name="hello, yxc"
echo ${name:0:5}  # 提取从0开始的5个字符

标签:acs,shell,name,echo,语法,9e0ebfcd82d7,Linux,yxc,变量
From: https://www.cnblogs.com/jia-ming/p/17890814.html

相关文章

  • Linux学习之yum管理器
    11.2yum基础源yum源指定存放在/etc/yum.repos.d,文件必须以.repo作为后缀名使用repolist查看仓库信息,显示与系统相关的基础包的数量yumrepolist每次配置yum源后,需要清除以前的yum数据库信息yumcleanall更新yum仓库本地缓存可以提高搜索与安装软件的速度yummakecache11......
  • 探索Linux存储管理:存储方式与基本分区
    在计算机领域,存储管理是操作系统中至关重要的一部分,而Linux作为一种强大的开源操作系统,其存储管理系统更是为用户提供了丰富的功能和灵活性。本文将深入探讨Linux存储管理的两个主要方面:存储方式和基本分区。存储方式1.文件系统:在Linux中,文件系统是组织和存储文件的一种结构。......
  • Linux通用中断处理 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/genericirq.htmlLinux通用中断处理版权©2005-2010:ThomasGleixner©2005-2006:IngoMolnar简介通用中断处理层旨在为设备驱动程序提供完整的中断处理抽象。它能够处理所有不同类型的中断控制器硬件。设备驱动程序使用......
  • Linux中的红黑树(rbtree)【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/rbtree.html红黑树(rbtree)在Linux中日期2007年1月18日作者[email protected]红黑树是什么,它们有什么作用?红黑树是一种自平衡的二叉搜索树,用于存储可排序的键/值数据对。这与基数树(用于高效存储稀疏数组,因......
  • PowerShell原生Cmdlets Get-Command详细使用介绍
    在我们学习PowerShell的初始阶段,我们最需要知道的应该是PowerShell本身给我们提供那些原生的Cmdlets。为了达到这个目的,使用PowerShell的get-command是个不二之选。为了了解这个命令输出的是什么对象,我们可以输入下面的命令进行了解Get-Command|Get-Member从输出种我们可以看到从上......
  • Linux kernel memory barriers 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/wrappers/memory-barriers.htmlLinux内核内存屏障免责声明本文档不是一个规范;它故意(为了简洁)和无意(因为是人类)不完整。本文档旨在指导如何使用Linux提供的各种内存屏障,但如果有任何疑问(而且有很多),请咨询。一些疑问可能通过参......
  • 【THM】Linux PrivEsc
    服务漏洞利用MySQL服务以root身份运行,并且该服务的“root”用户没有分配密码。我们可以使用一种流行的漏洞利用用户定义函数(UDF)通过MySQL服务以root身份运行系统命令。MySQL(Linux)-UDF-exp地址链接:https://www.exploit-db.com/exploits/1518相关漏洞详情:https://www.cve......
  • Linux-03shell语法
    概论shell是什么shell是我们通过命令行与操作系统沟通的语言。shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。ACTerminal中的命令行可以看成是一个“shell脚本在逐行执行”。Linux中常见的shell脚本有很多种,常见的有:BourneShell(/usr......
  • Linux 配置NTP时间同步服务
    1.安装[可选,如已安装则跳过]aptinstallntp2.启动NTP服务systemctlstartntpdsystemctlenablentpd3.查看NTP服务运行状态systemctlstatusntpd4.修改配置文件vi/etc/ntpsec/ntp.conf查找配置文件命令find/-namentp.conf1.使用第三方NTP地址进行时间同步......
  • Linux下的Cache和TLB刷新 【ChatGPT】
    https://www.kernel.org/doc/html/v6.6/core-api/cachetlb.htmlLinux下的Cache和TLB刷新作者:[email protected]本文描述了LinuxVM子系统调用的缓存/TLB刷新接口。它枚举了每个接口,描述了其预期目的以及在调用接口后预期的副作用。下面描述的副作用是针对单......