Shell语言基础语法(1)

目录

一、简介

1、Shell 语言的主要特点

2、常见的 Shell 类型

3、Shell 脚本示例

4、执行shell脚本

如何选择

 二、Shell语法

1、注释

2、 变量

语法:变量名=值

 变量的引用

删除变量

变量的命名规则

变量使用场景

3、常量

定义常量


一、简介

Shell 是一种命令行解释器,通常用于与操作系统进行交互。它允许用户通过输入命令来执行各种操作,如文件管理、进程控制、系统配置等。Shell 语言是一种脚本语言,用户可以编写脚本来执行一系列命令,从而自动化复杂的任务。

1、Shell 语言的主要特点

  1. 命令解释器:Shell 是一个命令解释器,它接收用户输入的命令并将其转换为操作系统可以理解的操作。

  2. 脚本语言:Shell 支持脚本编程,用户可以将一系列命令写入一个文件中,然后通过执行该文件来批量执行这些命令。

  3. 变量和参数:Shell 支持变量和参数的使用,用户可以在脚本中定义变量,并通过参数传递值。

  4. 条件判断和循环:Shell 提供了条件判断(如 if 语句)和循环(如 for 和 while 循环),使得脚本可以执行复杂的逻辑操作。

  5. 函数:Shell 支持函数的定义和调用,用户可以将一组命令封装在函数中,以便在脚本中重复使用。

  6. 内置命令和外部命令:Shell 提供了许多内置命令(如 cdpwdecho 等),同时也支持调用外部命令(如 lsgrep 等)。

  7. 管道和重定向:Shell 支持管道(|)和重定向(><>>),使得用户可以将一个命令的输出作为另一个命令的输入,或者将输出重定向到文件中。

2、常见的 Shell 类型

  1. Bash(Bourne Again Shell):这是最常用的 Shell,是 GNU 项目的一部分,广泛用于 Linux 和 macOS 系统。Bash 是 Bourne Shell(sh)的增强版本,提供了更多的功能和改进。

  2. sh(Bourne Shell):这是最早的 Unix Shell,功能相对简单,但仍然在许多系统中使用。

  3. csh(C Shell):语法类似于 C 语言,提供了一些额外的功能,如命令历史和作业控制。

  4. tcsh(TENEX C Shell):csh 的增强版本,提供了更多的功能和改进。

  5. zsh(Z Shell):Bash 的替代品,提供了更多的功能和自定义选项,广泛用于高级用户和开发者。

3、Shell 脚本示例

以下是一个简单的 Shell 脚本示例,它将输出 "Hello, World!" 并显示当前目录的内容:

在shell文件开头第一行添加:#!/bin/bash 表示我们选择使用的shell解释器是bash,也可以用:#!/usr/bin/env bash

#!/bin/bash

# 输出 "Hello, World!"
echo "Hello, World!"

# 显示当前目录的内容
ls

4、执行shell脚本

  •  输入脚本的绝对路径或相对路径

/root/hello.sh

./hello.sh

# 注意:执行的必须是一个可执行文件  chmod a+x xxx.sh
  •  bash或sh + 脚本
sh hello.sh

# 注意:当脚本没有X权限时,root和文件所有者通过该方式可以正常执行
  • 在脚本的路径前再加"或source

source hello.sh

 

如何选择
  • 如果需要修改当前 Shell 环境(如设置环境变量或定义函数),使用 source 或 .

  • 如果不需要修改当前 Shell 环境,且脚本文件有可执行权限,使用 ./script.sh

  • 如果不需要修改当前 Shell 环境,且脚本文件没有可执行权限,使用 bash script.sh 或 sh script.sh

 二、Shell语法

1、注释

  • 单行注释

以 # 开头的行就是注释,会被解释器忽略

# 这是一行注释
  • 多行注释
    • 可以用多行#开头
    • # 这是一行注释
      # 这是一行注释
      # 这是一行注释
      # 这是一行注释
    • 多行注释 :<<

    • :<<EOF  
      注释内容... 
      注释内容... 
      注释内容... 
      EOF
      
      # 在:<<后面的符号直到下次出现,之间的内容都是注释

2、 变量

  • 语法:变量名=值

注意:等号左右两边不能有空格!

name="xiaoming"
  •  变量的引用
name="xiaoming"
echo ${name}
# echo $name 也可以,不过建议加大括号
  • 删除变量
name="xiaoming"
unset name
# 使用 unset 变量名 就可以消除变量
  • 变量的命名规则

变量名的命令应该见名知意,同时遵循如下规则
以字母或下划线开头,剩下的部分可以是:字母、数字、下划线,最好遵循下述规范:
    1.以字母开头
    2.使用中划线或者下划线做单词的连接  
    3.同类型的用数字区分 
    4.对于文件名的命名最好在末尾加上拓展名 
    5、不要带有空格、?、*等特殊字符
    6、不能使用bash中的关键字,例如if,for,while,do等
    7、不要和系统环境变量冲突 

变量使用场景
  • 脚本运行时传值
#!/bin/bash

# 获取传递的参数
echo "第一个参数是: $1"
echo "第二个参数是: $2"
echo "第三个参数是: $3"

# 获取所有参数
echo "所有参数是: $@"

# 获取参数的个数
echo "参数个数是: $#"

 运行

./script.sh arg1 arg2 arg3

  • 用户交互传值

在Shell脚本中,可以通过read命令与用户进行交互,获取用户输入的值。

#!/bin/bash

# 提示用户输入
echo "请输入你的名字:"
read name

# 使用用户输入的值
echo "你好, $name!"

运行

./script.sh

3、常量

定义常量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。

name="123"
readonly name

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值