查看系统支持的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. Bob 的生存概率问题

    Bob 的生存概率问题 作者:Grey 原文地址: 博客园:Bob 的生存概率问题 CSDN:Bob 的生存概率问题 题目描述 给定五个参数 n , m , i , j , k,表示在一个 n*m 的 ...

  2. Python基础之函数:4、二分法、三元表达式、生成/推导式、匿名函数、内置函数

    目录 一.算法简介之二分法 1.什么是算法 2.算法的应用场景 3.二分法 二.三元表达式 1.简介及用法 三.各种生成式 1.列表生成式 2.字典生成式 3.集合生成式 四.匿名函数 五.常见内置函 ...

  3. 我用EasyExcel优化了公司的导出(附踩坑记录)

    背景介绍 最近要改一个导出的功能,在原有的基础上,在导出一份明细数据,要求导出内容加在原有 excel 的第二个 sheet 上.考虑到数据量还比较大,干脆引入阿里的 EasyExcel 来做. 下面 ...

  4. ES 客户端 RestHighLevelClient Connection reset by peer 亲测有效 2022-11-05

    导读 最新公司ES集群老出现连接关闭,进而导致查询|写入ES时报错,报错日志显示如下 [2m2022-10-23 14:13:10.088[0;39m - [31mERROR[0;39m - [35m ...

  5. Django系列---开发二

    django.contrib.auth Django的用户验证框架,可以快速实现用户信息验证.登录.登出等用户操作 from django.contrib.auth import authentica ...

  6. jvm之垃圾收集二之常用垃圾收集器

      前面简单介绍了如何确定对象是垃圾.什么时候回收.怎么回收,今天就来聊一聊java中常见的垃圾回收器,从Serial到G1,其中会着重解读CMS和G1的工作原理,包括如何安全的并发回收.cSet.r ...

  7. Java代码审计sql注入

    java_sec_code 该项目也可以叫做Java Vulnerability Code(Java漏洞代码). 每个漏洞类型代码默认存在安全漏洞(除非本身不存在漏洞),相关修复代码在注释里.具体可查 ...

  8. 重启redis

    [root@lecode-dev-001 packages]# /usr/local/redis/bin/redis-cli -p 6379 127.0.0.1:6379> auth Redis ...

  9. 18道经典链表题刷题总结——WeetCode1 链表系列

    系列文章目录和关于我 前言: WeetCode = Week leetCode 寓意每周刷点leetCode 题目 链表是我恢复刷题手感最喜欢做的系列,其没用太多的算法思想,单纯考验对指针的理解,和c ...

  10. float16与float32转换

    // based on https://gist.github.com/martin-kallman/5049614 // float32 // Martin Kallman // // Fast h ...