前言

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁,是linux内置的一款软件。

通过编写Shell的脚本,可以更好的使用linux系统(比如、安装卸载软件、增删改查文件等等),毕竟大部分linux、系统都没有界面,不像windows那样鼠标点点就完成了大部分需求。

shell软件的种类有很多,而且很多都被linxu内置(zsh很多linux尚未支持,可能需要安装和配置),不过好在他们的各自的脚本写法大差不差,且脚本文件的后缀名都为sh

名称 俗称 介绍 切换方式
Bourne Shell sh 最古老的 默认即是
Bourne Again Shell bash 最主流的 #!/bin/bash
Z-shell zsh 后起之秀 #!/usr/bin/env zsh

如何让linux知道我的sh需要用哪种shell程序执行呢?

在sh文件的第一行加上注释即可,比如我要使用bash作为我的此脚本文件的默认执行程序 #!/bin/bash

本教程关注的是 Bash,它易用和免费且大部分Linux 默认的 Shell

如何执行脚本文件

运行 Shell 脚本有两种方法:

作为可执行程序 ./test.sh

作为解释器参数(这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用) /bin/sh test.sh

变量

任何编程语言(脚本语言也是编程语言 比如js),变量都是基础。

变量是用于存储数据值的名称。

name="张三"

如使用变量呢?

加一个$ 即可,比如我要输出:echo $name即可,这点和其他语言不一样,不能直接echo name

数据类型

谈到变量,就不得不提数据类型。

字符串

用单引号 ' 或双引号 " 来定义字符串类型,区别是单引号里的任何字符都会原样输出(比如 变量和转义字符)。

name="xiaoming"

所以涉及到字符串的拼接,还是需要使用双引号模式。

echo "hello,$name" # 将会输出:hello,xiaoming

为了区分(主要是变量后的)边界,你还可以使用${name},比如

echo "hello,${name}tongxue!" # 将会输出:hello,xiaomingtongxue

数字

在shell中所有变量默认都是字符串型,,如果想作为数字运算需要用((运算式))$[运算式]expr命令这种形式

a=1
b=2
echo $a+$b # 打印:1+2
echo $[$a+$b] # 打印:3

另外shell默认不支持浮点数运算,需要通过第三方库yum -y install bc进行浮点运算

数组

两种定义方式:用括号来表示数组,数组元素用"空格"符号分割开。或者用角标分别单独定义

arr=(value0 value1 value2)
arr[0]=value0
arr[1]=value1
arr[age]=20

使用 ${}符号可以获取数组中的所有元素,例如:

echo ${arr[age]} #打印:20

传递参数

shell允许在执行脚本时,向脚本内部传递参数,

比如我们有一个脚本test.sh如下 :

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";

我们来执行它 ./test.sh 哈哈 嘻嘻,将会得到如下输出

[root@VM-24-8-centos ]# ./test.sh 哈哈 嘻嘻
执行的文件名:./test.sh
第一个参数为:哈哈
第二个参数为:嘻嘻

运算符

单独总结了一篇,点击查看

特殊符号

${ }、$[ ]、$( )的区别

${ }

Shell中使用一个已经定义过的变量,只要在变量名前面加美元符号$即可。

变量名外面的{ }是可选的,只是为了帮助解释器识别变量的边界。

str="java"
echo "I am $str"
echo "I am $s{str}Script"

$[]

是运算操作符,用于对整数进行数学运算

echo $[3*5] # 输出:8

$()

Shell 支持将命令的执行结果赋值给变量,即“命令替换”,。

variable=$(command)
variable=`command` # 命令替换的另一种写法

[ ]、[[ ]]、(())的区别

[ ]是test命令的简写形式,而test命令主要用于检测某个条件是否成立。

[[ ]] 是 test 的升级版,对细节进行了优化,并且扩展了一些功能,完全可以取代[ ]。

(())是一个数学计算命令,用于对整数进行数学运算,比如((a=10+66))

test命令用于检查文件类型和比较值,并且根据表达式的值来确定状态并退出。

所以如果只执行test命令,是不会有任何输出的,

可以使用echo $?来查看上次执的状态码(0表示成功,其他值则表示不成功)。

它经常和判读语句f..then一起使用,如果在终端输出打印,则经常和管道命令&&和||一起使用,如:

test 1 -ge 2 && echo "yes" || echo "no"
no

参考: https://blog.csdn.net/oqqHuTu12345678/article/details/129257269

shell语言入门的更多相关文章

  1. linux的shell脚本入门

    Linux shell脚本入门教程 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活 的工具.Shell不仅仅是命令的收集,而且是一门非常 ...

  2. C语言入门(21)——使用DBG对C语言进行调试

    C语言入门(21)--使用DBG对C语言进行调试 程序中除了一目了然的Bug之外都需要一定的调试手段来分析到底错在哪.到目前为止我们的调试手段只有一种:根据程序执行时的出错现象假设错误原因,然后在代码 ...

  3. Shell基础入门

    目录 Shell基础入门 1.什么是Shell? 2.Shell脚本的结构 3.Shell的变量 3.1.自定义环境变量 3.2.普通变量 3.3.位置参数变量 3.4.状态变量 4.条件测试和比较 ...

  4. Erlang语言入门

    Erlang语言入门 下载Erlang,http://www.erlang.org/downloads 安装之后开始菜单中有Erlang图标,打开之后是Erlang Shell,可以定制喜欢的颜色和字 ...

  5. 【Introduction】R语言入门关键小结

    写在前面:本博客为本人原创,严禁任何形式的转载!本博客只允许放在博客园(.cnblogs.com),如果您在其他网站看到这篇博文,请通过下面这个唯一的合法链接转到原文! 本博客全网唯一合法URL:ht ...

  6. 【shell】shell脚本入门

    1. 前言 1.1 为什么学习shell编程 Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具,Linux/UNIX系统的底层及基础应用软件的核心大部分涉及Shell脚 ...

  7. Linux Shell编程入门

    从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操 ...

  8. 踢爆IT劣书出版黑幕——由清华大学出版社之《C语言入门很简单》想到的(1)

    1.前言与作者 首先声明,我是由于非常偶然的机会获得<C语言入门很简单>这本书的,绝对不是买的.买这种书实在丢不起那人. 去年这书刚出版时,在CU论坛举行试读推广,我当时随口说了几句(没说 ...

  9. Linux Shell脚本入门--cut命令

    Linux Shell脚本入门--cut命令 cut cut 命令可以从一个文本文件或者文本流中提取文本列. cut语法 [root@www ~]# cut -d'分隔字符' -f fields &l ...

  10. 我为什么反对推荐新人编程C/C++语言入门?

    虽然我接触编程以及计算机时间比较早,但是正式打算转入程序员这个行当差不多是大学第四年的事情 从03年接触计算机,07年开始接触计算机编程, 期间接触过的技术包括 缓冲区溢出(看高手写的shellcod ...

随机推荐

  1. 太赞了!两个技巧帮你记住复杂 Linux 命令!

    Linux 经历这么多个年头了,其中命令越来越多,又加上参数的多种多样,就算是实打实的高手也没有十足的把握能把各种命令运用得炉火纯青,就别说那些初学者了. 面对这些复杂难记的命令,网上的一些工具如 K ...

  2. MySQL的并发问题的解决方案

    怎么解决脏读.不可重复读.幻读这些问题呢?其实有两种可选的解决方案 方案一.读操作利用MVCC(多版本并发控制),写操作进行加锁. 所谓的MVCC,就是生成一个ReadView,通过ReadView找 ...

  3. window下配置多个Git账号

    三步完成配置一台电脑下多git账号配置 1.生成密钥 git客户端安排好后,打开git Bash,生成SSH key. ssh-keygen -t rsa -C "user1111@emai ...

  4. journalctl -u docker 查看日志

    转载注明出处: 1. 查看 Docker 服务的最新日志(实时滚动) sudo journalctl -u docker -f -f 参数表示 跟随(follow),会持续输出最新日志(类似 tail ...

  5. MySQL 索引的最左前缀匹配原则是什么?

    MySQL 索引的最左前缀匹配原则 最左前缀匹配原则是 MySQL 使用联合索引时的一个重要优化规则.它指的是在查询条件中,只有符合索引最左侧字段开始的连续前缀部分时,索引才能被有效利用. 1. 最左 ...

  6. 一条 SQL 语句在 MySQL 中的执行过程

    一条 SQL 语句在 MySQL 中的执行过程 当一条 SQL 语句被提交到 MySQL 时,它会经历多个步骤,包括解析.优化.执行等.以下以 SELECT 语句为例,详细描述整个执行流程. 1. 客 ...

  7. 12.ZIP伪加密

    题目是伪加密,打开压缩包,发现里面直接放着flag.txt,但是好像需要输入密码,此时我们在不看题目的第一反应就是破解,但是无果,看了别人的wp之后,了解了一点伪加密. ZIP文件分为:压缩源文件数据 ...

  8. 掌握Tortoise-ORM高级异步查询技巧

    title: 掌握Tortoise-ORM高级异步查询技巧 date: 2025/04/22 12:05:33 updated: 2025/04/22 12:05:33 author: cmdrago ...

  9. firebase studio硬刚cursor,送免费云服务可跑23b大模型

    谷歌IDX提供免费高配云服务器(16核CPU,64G内存,300G硬盘),无需绑卡,只需一个能正常使用的谷歌账号.这是一个非常强大的开发环境,特别适合运行大型AI模型和开发工作. 一.Google I ...

  10. Vue计算属性computed与监听器watch

    Vue计算属性computed与监听器watch 诞生原因:在模板中放入太多的逻辑会让模板过重且难以维护,比如 对后台插入地数据进行切割重组  <div id="example&quo ...