Linux Shell编程

article/2025/10/8 6:29:46

Linux Shell编程

一、简述

      简单的介绍shell脚本的基本用法。

     shell脚本是 由一些按照一定格式组合起来的shell命令 组成。shell脚本不需要编译就可以直接执行,它是边解释边执行的。

二、命令解释器

       Linux系统提供多种不同的Shell以供选择。常用的有Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。

       查看当前系统使用的shell默认解释器:echo $SHELL

      

三、脚本格式

        脚本的第一行:

#!/bin/bash

         这句话的意思是指定一款在/bin/下名字叫 bash 的 Shell 解释器,来解释脚本中的命令。如果系统用的是其他的解释器,就要将/bin/bash 改成相应的名字。

       如一个简单的脚本:hello.sh     (在终端打印"hello shell",并且将hello.sh文件的内容打印出来)

      

     注:1)如果没有执行权限的需要添加执行权限,chmod a+x xxx.sh    (表示所有用户都添加执行权限)

             2)除了第一行,后面的'#'号就是注释符,'#'号后面的就是注释内容,会被解释器忽略。

       注:也可以在执行时指定解释器

        

四、变量

       Shell 脚本是一种弱类型语言,在脚本当中使用变量不需要也无法指定变量的“类型”。 缺省状态下,Shell 脚本的变量都是字符串。

      4.1 变量的定义和赋值

             变量名=变量值          (等号两边不能有空格)

            myname="liang"         ( 可以不赋初值:myname=)

     4.2 变量的引用

           在变量名前面加上一个美元符号'$'

           $myname            (引用myname变量的值)

                如:定义一个变量myname并赋初值,然后打印myname变量的值。再从键盘输入一个名字,再打印出来。

                 var.sh 内容:

                 

                执行结果:

                

     注:不用预先定义变量,可以直接使用变量,用的时候也是定义。

      4.3  变量的种类

      a)   普通的用户自定义变量,比如上面的 myname。

      b)   系统预定义好的环境变量,比如 PATH,SHELL(系统默认使用的命令解释器)。

             

             可以使用env (environment环境)命令查看系统的环境变量。

             

      c)   命令行变量,比如$#、$*等 。

变量名含义
$#表示位置参数的数量 
$*表示所有位置参数的内容 
$?表示命令执行后返回的状态,用于检查上一个命令的执行是否正确;在Linux中,命令退出状态为0表示命令正确执行,任何非0值表示命令执行错误
$$表示当前进程的进程号
$!表示后台运行的最后一个进程号 
$0表示当前执行的进程名
$1表示命令行的第一个参数,(就是在执行脚本的时候传递的参数:./xxx.sh arg1 arg2 ......)

                  例子代码:

                                   

                  运行结果:

                

五、双引号、单引号、反引号的作用

        5.1 双引号:将一连串的字符括起来成为一个"值"。

            在定义变量的时候,如只有一个单词,可以不用加双引号。

             

             

            如果字符串中多个单词(含有空格,tab制表等特殊符号)时,就需要用双引号括起来,以准确的将整个一个字符串赋值给变量。

            

            

      5.2 反引号(是波浪号~那个按键):将反引号括起来的内容作为一个命令,然后执行并将结果替换到当前位置。

              

              

      5.3 单引号:将括起来的内容全部当做是普通字符。

             

             
六、数组           

        6.1  数组的定义

              

              

        6.2 输出全部数组元素

              

              

七、for循环

        7.1 for循环的简单使用

              

             

         7.2 使用for循环对数组元素进行遍历

             

             

             或者是:

             

         7.3 使用for循环对数组元素进行逐个赋值

             

             

             

         7.4 另一种形式的for循环

          

八、if语句

        8.1 输入一个数,如果大于10,就打印more,等于10就打印equal,否则打印less。

                

                

                或者是使用test

               

               

  8.2  输入一个字符串如果是"apple",就打印tree;否则打印输入的字符串。     

                

                

九、test语句:

            

语句

含义

说明

test -e file

判断文件 file 是否存在

存在返回 0,否则返回 1

test -r file

判断文件 file 是否可读

可读返回 0,否则返回 1

test -w file

判断文件 file 是否可写

可写返回 0,否则返回 1

test -x file

判断文件 file 是否可执行

可执行返回 0,否则返回 1

test -d file

判断文件 file 是否是目录

是目录返回 0,否则返回 1

test -f file

判断文件 file 是否是普通文件

是普通文件返回 0,否则返回 1

test -s file

判断文件 file 是否非空

非空返回 0,否则返回 1

test s1 = s2

判断字符串 s1 和 s2 是否相同

相同返回 0,否则返回 1

test s1 != s2

判断字符串 s1 和 s2 是否不同

不同返回 0,否则返回 1

test s1 < s2

判断字符串 s1 是否小于 s2

s1 小于 s2 返回 0,否则返回 1

test s1 > s2

判断字符串 s1 是否大于 s2

s1 大于 s2 返回 0,否则返回 1

test -n s

判断字符串 s 长度是否为非 0

s 长度为非 0 返回 0,否则返回 1

test -z s

判断字符串 s 长度是否为 0

s 长度为 0 返回 0,否则返回 1

test n1 -eq n2

判断数值 n1 是否等于 n2

n1 等于 n2 返回 0,否则返回 1

test n1 -ne n2

判断数值 n1 是否不等于 n2

n1 不等于 n2 返回 0,否则返回 1

test n1 -gt n2

判断数值 n1 是否大于 n2

n1 大于 n2 返回 0,否则返回 1

test n1 -ge n2

判断数值 n1 是否大于等于 n2

n1 大于等于 n2 返回 0,否则返回 1

test n1 -lt n2

判断数值 n1 是否小于 n2

n1 小于 n2 返回 0,否则返回 1

test n1 -le n2

判断数值 n1 是否小于等于 n2

n1 小于等于 n2 返回 0,否则返回 1

     

九、case语句

       9.1 输入一个字母,是A就打印"90~100", 是B就打印"70~89", 是C就打印"60~69",是D就打印"<60",其它就打印"again"。

               

               

     注:通配*不带双引号,需要时请放到最后。

十、while循环

       10.1 打印1到10

              

              

              

       10.2 将1累加到10

               

               

注: 死循环, 可以使用break跳出循环

#!/bin/bashwhile true
doecho "while ..."sleep 1#break	#跳出循环
done

十一、until语句

          11.1  打印1到10

               

               

十二、休眠/延时

           sleep xxx                 (xxx是秒数)

十三、函数

            13.1 函数的定义与简单的使用

                

                

十四、一些例子

          14.1 判断文件是否存在            

#!/bin/bashfile1="123.txt"
file2="test.sh"
if [ -f "$file1" ]
thenecho "$file1 is a file"
elseecho "$file1 is not a file"
fiif [ -f "$file2" ]
thenecho "$file2 is a file"
elseecho "$file2 is not a file"
fi

          14.2 判断目录是否存在

            

          14.3 获取字符串字符个数,遍历字符串每一个字符

          


http://chatgpt.dhexx.cn/article/RBG21lDp.shtml

相关文章

Shell编程入门学习

文章目录 Shell编程Shell脚本的执行方式Shell的变量Shell的变量的介绍shell变量的定义 设置环境变量位置参数变量介绍基本语法 预定义变量基本介绍基本语法 运算符基本语法 条件判断判断语句常用判断条件 流程控制if 判断case语句for循环while循环 read读取控制台输入基本语法 …

shell编程

文章目录 一、shell简介二、shell脚本的执行方式三、shell变量3.1 shell变量介绍3.2 shell变量的定义3.2.1 基本语法3.2.2 定义变量的规则3.2.3 将命令的返回值赋予变量 四、环境变量的设置五、位置参数变量5.1 基本介绍5.2 基本语法 六、预定义变量6.1 基本介绍6.2 基本语法 七…

shell编程入门(一天掌握shell编程)

一、背景 到新公司之后&#xff0c;发现好多地方需要使用shell来编写一些简单的程序来提升自己的工作效率&#xff0c;因此专门B站上查看视频&#xff08;尚硅谷的视频&#xff09;&#xff0c;在这里学习总结下shell编程。 二、shell概述 shell是一个命令行解释器&#xff…

Linux【实操篇】—— Shell 编程入门、变量、运算符、条件判断、流程控制

目录 一、Shell 编程入门 1. 认识 Shell 2. Shell 脚本的创建与执行 二、Shell 变量 1. 系统变量和自定义变量 2. 变量的基本规则 3. 设置环境变量 4. 位置参数变量 5. 预定义变量 三、运算符 四、条件判断 五、流程控制 1. if 语句 2. case 语句 3. fo…

各大常见OJ与推荐OJ汇总(OJ题量统计)

这么长时间了 收集了不少做题的网站 在这里列一列 可以挑自己各方面都喜欢的主用 并没有什么顺序 大家择优选择 Last-Modified: 2023/3 POJ&#xff08;北京大学&#xff09;洛谷CowcoderLibreOJCodeforces&#xff08;俄罗斯&#xff09;东北大学秦皇岛分校oj51Nodhihocoder…

华为OD机试(2023A+B)在线OJ模拟

语言支持 CCJavaJavaScript&#xff08;Node.js-CJS、Node.js-ESM&#xff09;Python&#xff08;Python3、PyPy3、Python3-Graphics&#xff09;Mono C#GoRubyRustSQLHaskellBashJuliaKotlin/JVMFortranPascalPHPVerilog 用例库说明 在线OJ中的题目用例均来自本人构思&#…

在线OJ注意事项

CSDN话题挑战赛第2期 参赛话题&#xff1a;学习笔记 一、OJ概念 online judge&#xff0c;简称OJ&#xff0c;是一个在线的判题系统。 用户可以在线提交多种程序代码(比如&#xff1a;C、C、Java、Python等)&#xff0c;系统对源代码进行编译和执行&#xff0c;并通过预先设计…

在线OJ系统

在线OJ系统 项目开始之前需要准备的第三方库项目分析 两大模块在线编译模块整体思路编译模块 题目管理模块数据存储页面显示服务器 项目开始之前 需要准备的第三方库 httplib g版本必须得是4.9以上 ctemplate boost&#xff1a; yum install boost-devel.x86_64 jsoncpp&a…

分享一个OJ平台——浙江工商大学的OJ平台

1.引言 最近是有总喜欢讨论算法题&#xff0c;因为他们在准备考研复试&#xff0c;为什么我不准备呢&#xff1f;这是一个悲伤的故事&#xff0c;刚好自己也有面试遇到只能使用C和C的代码题&#xff0c;他们说这OJ平台相对简单一些&#xff0c;那些刷不来LeetCode可以试试这个&…

算法OJ题(1)

1.删除有序数组中的重复项 原题链接&#xff1a;https://leetcode.cn/problems/remove-duplicates-from-sorted-array/ 思路&#xff1a;使用双指针算法可以使时间复杂度达到O(1). 具体过程&#xff1a;&#xff08;以画图解释&#xff09; 代码实现&#xff1a; int remove…

你想知道刷题的秘密吗?一篇博客让你明白什么是OJ题,如何刷OJ题,并深入浅出的带你刷遍顺序表的OJ题(小白必看)

目录 0.前言 1.什么是OJ 1.1 OJ简述 1.2 OJ的分类&#xff08;尤其接口型OJ&#xff0c;带你剖析得明明白白&#xff09; 1.3 接口型OJ的输入型参数 2. 剑指 Offer 56 - I. 数组中数字出现的次数 3. 88. 合并两个有序数组 4. 27.移除元素 5. 26. 删除有序数组中的重复…

Online Judge系统(简称OJ)

什么是OJ Online Judge系统&#xff08;简称OJ&#xff09;是一个在线的判题系统。用户可以在线提交程序源代码&#xff0c;系统对源代码进行编译和执行&#xff0c;并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比…

OJ的介绍以及使用方法

OJ系统简介 Online Judge系统&#xff08;简称OJ&#xff09;是一个在线的判题系统。用户可以在线提交程序多种程序&#xff08;如C、C&#xff09; 源代码&#xff0c;系统对源代码进行编译和执行&#xff0c;并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提…

C++-OJ

题目源自某高校C的OJ 本文字数过多&#xff0c;所有代码&#xff0c;都在这里 将做过的C OJ题目整理合并了一下&#xff0c;总共有一百多道题目&#xff0c;手动合并自然是不可能的 这个时候我们就可以使用shell脚本来取代这种机械化的重复劳动了&#xff0c;由于写成博客需要…

杭电OJ刷题指南(ACM)

除了杭电OJ&#xff0c;还有北大OJ&#xff0c;华科OJ等。 1.首先&#xff0c;打开百度&#xff0c;输入“杭电OJ”进行搜索 2.然后进入杭电OJ官网&#xff0c;进行注册 3.输入注册信息 4.接下来进入详细注册界面&#xff0c;将信息填写完整后点击Submit 5.接下来即可登录…

OJ系统

什么是OJ Online Judge系统&#xff08;简称OJ&#xff09;是一个在线的判题系统。用户可以在线提交程序源代码&#xff0c;系统对源代码进行编译和执行&#xff0c;并通过预先设计的测试数据来检验程序源代码的正确性。 一个用户提交的程序在Online Judge系统下执行时将受到比…

最适合编程训练的三大OJ(从易到难)

按照学习的需求来说依次介绍&#xff0c;方便初学者使用&#xff1a; 1.Dotcpp网www.dotcpp.com 优点&#xff1a;全中文OJ&#xff0c;题目分类&#xff0c;有题解 这可能是初学者最好用的OJ甚至没有之一了 全中文的友好操作&#xff0c;充足的语法基础题、二级C语言题、…

各大OJ刷题平台汇总

前言 想成为一名高级工程师&#xff0c;算法还是要有的&#xff0c;至少在入门编程和进入公司之前都是必备的。刷题也可以很好的锻炼动手能力和逻辑思维&#xff0c;今天就给大家介绍一些知名的在线刷题平台,都是干货哦&#xff01; 力扣(leetcode) 江湖人尽皆知的站点&#xf…

OJ的基本原理

OJ的简介&#xff1a;OJ(Online Judge)&#xff0c;就是一个线上判断的接口&#xff0c;通常用于一些比赛中的程序判断&#xff0c;也就是将符合程序的结果放在OJ上&#xff0c;来进行程序验证&#xff0c;后来的大量的互联网公司也开始使用OJ来判断题目的正确性。 OJ的分类 …

【OJ】OJ的介绍和常用OJ推荐

目录 OJ的介绍编程刷题OJ集合计蒜客(主刷编程题 &#xff09;牛客网(编程题和选择题都有)力扣(主要编程大题)领扣(主刷大题)Comet OJACMOREXidian Programming Contest Online Judge晴问浙江中医药OJZOJHDUOJ华东师范OJ洛谷codeforces 常见的测评结果 OJ的介绍 Online Judge 简…