查看系统支持的shell

cat /etc/shells
[root@iZwz9almo8p830btq7voo9Z shellLearning]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

查看系统当前的shell

[root@iZwz9almo8p830btq7voo9Z shellLearning]# echo $SHELL
/bin/bash

Shell脚本文件编写规范

脚本文件后缀名规范

shell脚本文件就是一个文本文件,建议使用.sh结尾

首行格式规范

#!/bin/bash

含义:设置当前shell脚本采用bash解析器运行脚本代码

注释格式

# 单行注释
:<<!
# 多行注释内容
!

脚本文件常用执行的三种方式

  1. sh解析器执行

    sh helloworld.sh
  2. bash解析器执行

    bash helloworld.sh
  3. 仅路径执行

    ./helloworld.sh
    #需要具有可执行权限
    [root@iZwz9almo8p830btq7voo9Z shellLearning]# chmod a+x helloworld.sh
    [root@iZwz9almo8p830btq7voo9Z shellLearning]# ./helloworld.sh
    hello world

    三种方式运行区别

    bash或sh执行是直接通过解析器执行,不需要可执行权限

    通过路径执行需要可执行权限

Shell脚本入门:多命令处理

案例需求

已知目录 /root/shellLearning目录,执行bashch.sh脚本,在目录下创建一个one.txt,在one.txt中写入"hello shell"

步骤分析

  1. 使用mkdir创建/root/shellLearning目录

  2. 创建脚本文件batch.sh

  3. 编辑脚本文件

    1. 创建文件one.txt
    2. 写入hello shell
  4. 执行脚本文件

[root@iZwz9almo8p830btq7voo9Z shellLearning]# bash -v bashch.sh
#!/bin/bash
touch /root/shellLearning/one.txt
echo "hello shell" >> /root/shellLearning/one.txt
[root@iZwz9almo8p830btq7voo9Z shellLearning]# bash bashch.sh

[root@iZwz9almo8p830btq7voo9Z shellLearning]# ls

a.sh a.txt bashch.sh hello.txt helloworld.sh one.txt readme.txt weizhi.sh while.sh

[root@iZwz9almo8p830btq7voo9Z shellLearning]# cat one.txt

hello shell

Shell变量:环境变量

变量类型

  1. 系统环境变量
  2. 自定义变量
  3. 特殊符号变量

系统环境变量

介绍

是系统提供的共享变量,是linux系统加载shell的配置文件中定义的变量共享给所有的shell程序使用

自定义变量

特殊符号变量

Shell的配置文件分类

  1. 全局配置文件

    /etc/profile

    /etc/profile.d/*.sh

    /etc/bashrc

  2. 个人配置文件

    当前用户/.bash_profile

    当前用户/.bashrc

环境变量分类

在linux系统中,环境变量按照其作用范围不同大致可以分为系统级环境变量喝用户级环境变量

系统级环境变量:Shell环境加载全部配置文件中的变量共享给所有用户Shell程序使用,全局共享

用户级环境变量:Shell环境加载个人配置文件中的变量共享给当前用户Shell程序使用,登录用户使用

查看当前shell系统环境变量

env

查看Shell变量(系统环境变量+自定义变量+函数)

set

环境变量演示查看

[root@iZwz9almo8p830btq7voo9Z shellLearning]# echo $HOSTTYPE
x86_64

Shell变量:自定义变量

定义在一个脚本文件中的变量,只能在该脚本文件中使用,就是局部变量。

定义语法

var_name=value

变量定义规则

  1. 变量名称可以有字母,数字和下划线,但是不能以数字开头
  2. 等号两侧不能有空格
  3. 在bash环境中,变量的默认类型都是字符串类型,无法直接进行数值运算
  4. 变量如果有空格,必须使用双引号括起来
  5. 不能使用shell的关键字作为变量名称

查询变量语法

#$var_name
#${var_name}
#区别花括号方法适合拼接字符串

变量删除

#unset var_name
[root@iZwz9almo8p830btq7voo9Z shellLearning]# unset age
[root@iZwz9almo8p830btq7voo9Z shellLearning]# echo 我的名字是$name,年龄是$age
我的名字是zhangsan,年龄是

自定义常量

介绍

就是变量设置值以后不可以修改的变量叫常量,也叫只读变量

顶一规则

#readonly var_name
readonly sex=男

自定义全局变量

父子Shell环境介绍

例如:有2个脚本文件a.sh和b.sh

如果在a.sh中执行了b.sh脚本文件,那么a.sh就是父shell环境,b.sh就是子shell环境

自定义全局变量介绍

就是在当前脚本文件中定义了全局变量,这个全局变量可以在当前shell环境与子shell环境中使用

自定义全局变量语法

export var_name1 var_name2

例子

[root@iZwz9almo8p830btq7voo9Z shellLearning]# touch a.sh b.sh
[root@iZwz9almo8p830btq7voo9Z shellLearning]# ls
a.sh a.txt bashch.sh b.sh hello.txt helloworld.sh one.txt readme.txt weizhi.sh while.sh
[root@iZwz9almo8p830btq7voo9Z shellLearning]# vim a.sh
[root@iZwz9almo8p830btq7voo9Z shellLearning]# vim b.sh
[root@iZwz9almo8p830btq7voo9Z shellLearning]# bash a.sh
b.sh中输出a.sh中的变量var4,值为
#修改为全局变量
[root@iZwz9almo8p830btq7voo9Z shellLearning]# bash a.sh
b.sh中输出a.sh中的变量var4,值为wocao

Shell变量:特殊变量

$n

$n用于接收脚本的参数
$0是脚本名称
$1-$9是1-9个参数
10+用${n}

$#

所有输入参数的个数

$*、$@

都是获取输入的所有参数
1.不使用双括号括起来,功能一样
2.使用双引号括起来
"$*"获取所有的参数拼接为一个字符串
"$@"获取以组参数列表对象

循环语法

for var in 列表变量
do
语句
done

$?上一句shell的执行状态码,0成功,非0失败

$$ 用于获取当前的shell的进程id号

shell系统环境变量深入

创建系统环境变量

  1. 编辑/etc/profile全局配置文件

    #增加命令:定义变量VAR1=VAR1 并导出为环境变量
  2. 重载配置文件/etc/profile,因为配置文件修改后需要立刻加载里面的数据

    source /etc/profile
  3. 在shell环境中读取系统级环境变量VAR1

shell基础命令知识持续更新的更多相关文章

  1. 常用linux基础命令(持续更新...)

    删除 空目录 rmdir非空目录 rm -rf 目录名字-r 就是向下递归,不管有多少级目录,一并删除-f 就是直接强行删除,不作任何提示的意思 删除文件命令rm -f 文件名将会强行删除文件,且无提 ...

  2. 【CDN+】 Hbase入门 以及Hbase shell基础命令

    前言 大数据的基础离不开Hbase, 本文就hbase的基础概念,特点,以及框架进行简介, 实际操作种需要注意hbase shell的使用. Hbase  基础 官网:https://hbase.ap ...

  3. 运维02 Shell基础命令(一)

    Shell基础命令(一)   Shell 教程 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. Shell 是指一种应 ...

  4. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  5. 【github&&git】4、git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  6. 运维 04 Shell基础命令(二)

    Shell基础命令(二)   查看Linux的发行版 cat /etc/redhat-release cat /etc/os-release 查看系统用户的id信息 id 用户名 id root id ...

  7. Pig基础学习【持续更新中】

    *本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.* Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的,可以作为MapR ...

  8. Linux命令(持续更新ing)

    *.命令语法:  a.在进行参数设定时,通常为“-”号,若为完整参数名称,则输入“--”符号;  b.指令太长的时候,可以使用“\”符号使指令连续到下一行;  c.各种符号的意义:    ''     ...

  9. Linux 服务器命令,持续更新……

    记录一下常用命令给自己备忘备查,会持续更新-- 一.查看和修改Linux的时间 1. 查看时间和日期,命令: date 2.设定时间和日期 例如:将系统日期修改成2020年2月14日12点的命令: d ...

  10. 第二篇:shell基础命令(部分)

    目录 一.shell命令规则 二.基础命令详解(部分) ls :列出目录内容 mkdir : 创建目录 rmdir :删除目录 touch:新建文件 mv:修改文件(目录)名.移动路径 cp:复制文件 ...

随机推荐

  1. 二十八、Helm

    使用Helm3管理复杂应用的部署 认识Helm 为什么有helm? Helm是什么? kubernetes的包管理器,"可以将Helm看作Linux系统下的apt-get/yum" ...

  2. Aspose.Cell篇章3,设置写入到Excel文件的各种样式及输出

    Aspose.Cell的Style.Number设置全部设置 /// <summary> /// 单元格样式编号 /// 0 General General /// 1 Decimal 0 ...

  3. 源码级深度理解 Java SPI

    作者:vivo 互联网服务器团队- Zhang Peng SPI 是一种用于动态加载服务的机制.它的核心思想就是解耦,属于典型的微内核架构模式.SPI 在 Java 世界应用非常广泛,如:Dubbo. ...

  4. [CS61A] Lecture 4. Higher-Order Functions & Project 1: The Game of Hog

    [CS61A] Lecture 4. Higher-Order Functions & Project 1: The Game of Hog Lecture Lecture 4. Higher ...

  5. Go语言核心36讲03

    [Go语言代码较多,建议配合文章收听音频.] 你好,我是郝林.从今天开始,我将和你一起梳理Go语言的整个知识体系. 在过去的几年里,我与广大爱好者一起见证了Go语言的崛起. 从Go 1.5版本的自举( ...

  6. 深度学习之logistics回归

    在开始之前,事先声明本文参考[中文][吴恩达课后编程作业]Course 1 - 神经网络和深度学习 - 第二周作业_何宽的博客-CSDN博客_吴恩达课后编程作业 加上自己的理解,希望可以不用重复看吴恩 ...

  7. nydusd 源码理解(一)

    " 尝试通过 nydus[1] 源码理解工作流程.可能由于代码变动导致和本文记录的内容有出入. 1. 环境准备 git clone https://github.com/dragonflyo ...

  8. 大前端html基础学习02

    CSS核心属性 一.css属性和属性值的定义 属性:属性是指定选择符所具有的属性,它是css的核心. 属性值:属性值包括法定属性值及常见的数值加单位,如25px,或颜色值等. 二.CSS文本属性 1. ...

  9. @responseBody 返回更多数据

    @responseBody:注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需 ...

  10. VulnHub靶机渗透实战9-vikings

    ​本次靶机是CTF风格的靶机. 靶场地址:Vikings: 1 ~ VulnHub 网络呢还是桥接模式. Description Back to the Top A CTF machine with ...