百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分类 > 正文

25个简单shell例子(shell实例讲解)

feilongw 2025-04-26 00:07 16 浏览

shell编程其实真的很简单(一)

如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux。说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的很简单。

背景

什么是shell编程

高大上的解释,往往让人摸不住头脑。一句话概括就是:shell编程就是对一堆Linux命令的逻辑化处理。

为什么要会shell编程

举个简单的例子,我们做javaweb开发的,在以前,如果要在本地将程序打包,然后部署到远程服务器(抛开现在的ci, 原始的方法), 我们以前的做法通常会经历如下几个步骤:

  • 拉取最新代码(git pull)
  • 编译打包
  • 上传并部署到远程服务器

每次打包都要经历这一个阶段,效率低又烦躁。而此时,我们可以编写一个shell脚本,然后每次只需要运行一下这个shell脚本,即可实现打包部署这一系列动作,彻底解放双手,多好

入门

第一个shell程序

#!/bin/bash
#第一个shell小程序
echo hello world!

以上,我们的第一个shell小程序就完成了,结果当然是输出我们熟悉的hello world。

第一行表示我们选择使用bash shell。

shell中#符号表示注释。shell的第一行比较特殊,一般都会以#!开始来指定使用的shell类型。在linux中,除了bash shell以外,还有很多版本的shell, 例如zsh、dash等等...不过bash shell还是我们使用最多的。

第二行以#符号开始,表示本行是注释,运行的时候是不会运行本行的。

第三行中的echo是linux中的输出命令,该行的意思很明显的就是输出hello world!

运行第一个shell程序

新创建一个文件(hello_world.sh), 然后将以上代码复制到此文件中,然后需要赋予此文件的可执行权限。

chmod +x hello_world.sh

最后执行:

./hello_world.sh

在linux中,后缀名几乎是可以任意的或者没有后缀名,一般将shell保存为xxx.shell是为了看起来更直观。

如果直接执行hello_world.sh,这时会默认从$PATH环境变量中去寻找,这时,由于我们为将此文件配置在环境变量中,因此会找不到。所以,我们用了"."这个符号,表示从当前目录找。
除了以上执行方法,我们还可以直接指定shell来运行:

/bin/sh hello_world.sh

这儿我们指定用了/bin/sh来执行,这时hello_world.sh中指定的/bin/bash将不会生效。

变量

编程岂能没有变量?对吧?

shell编程中分为两种变量,第一种是我们自己定义的变量(自定义变量),第二种是Linux已定义的环境变量(环境变量, 例如:$PATH, $HOME 等..., 这类变量我们可以直接使用)。

#!/bin/bash
#使用环境变量
echo $PATH
#自定义变量hello
hello="hello world"
echo $hello

以上演示了自定义变量和系统环境变量的用法,使用很简单,就是使用$符号加上变量名就行了。记住:定义变量不用$符号,使用变量要加$就行了。

在第5行中,我们在自定义变量时,使用了双引号,在shell编程中, 如果变量出现空格或者引号,那么也必须加引号, 否则就可以省略。

还有一点需要注意,定义变量的时候,“=”左右千万不要有空格啊。

将linux命令执行结果赋值给变量

#!/bin/bash
path=$(pwd)
files=`ls -al`
echo current path: $path
echo files: $files

以上2行和第3行分别演示了两种方式来将Linux命令执行结果保存到变量。

第2行将pwd执行结果(当前所在目录)赋值给path变量。

第3行将ls -al命令执行结果(列出当前目录下所有的文件及文件夹)赋值给变量

注意:第三行的符号不是单引号,是键盘上“~”这个按键

好啦,到此,对shell编程已经有初步认识了,也会使用变量了。到此,看起来shell编程是不是很的简单。没错,其实真的就这么一回事。

相关推荐

iToolab UnlockGo for mac(苹果设备解锁工具) v4.5.0激活版

iOS设备解锁工具:iToolabUnlockGomac中文版iToolabUnlockGoforMac是一款专业的iOS设备解锁工具,iToolabUnlockGomac版能够在iP...

arm linux gcc 安装(arm linux gcc命令)

「嵌入式」Linux开发工具arm-linux-gcc安装及使用知识架构及层次—程序编译及调试嵌入式交叉编译器安装配置宿主机执行编译、链接嵌入式软件的计算机目标机运行嵌入式软件的硬件平台“本地”编...

28推精英会专访IT博主卢松松

卢松松:我是创业人前段时间接受了中国青年政治学院的校内媒体《青春报》的一次访谈,那这次访谈主要是针对当代大学生对我目前所做的工作一次了解,也让大学生们对自媒体、站长、草根互联网有一个基本认识。这是一个...

Android 中怎么使用IActivitymanager

Android操作系统之Activity的启动过程前言上篇文章写到Service的启动过程;相对来说Activity的启动过程比Service的启动过程更为复杂,其一Activity的生命...

codesign 指令集 指令集编程

丛京生:可定制计算的设计自动化(感谢ASP-DAC组委会和北京大学罗国杰教授提供照片)我很有幸从第一届亚太地区设计自动化会议(ASP-DAC)起就参与到ASP-DAC这个大家庭。我的第一篇ASP-DA...

CorelDRAW2023永久免费版图形图像处理软件

Mac上的CorelDRAW平面设计软件(cdr2023中文掌握创意的魔杖:畅游Mac上的CorelDRAW中文版亲爱的设计师们,一场设计之旅即将展开!CorelDRAWGraphicsSuit...

java实现磁力链下载功能 java根据链接下载文件

#最值会员#下载会员哪家值?迅雷、QQ旋风、百度云会员对比作者:code54264前言:老夫的Q龄已经年了。从爪机时代的java到原始智能的Symbian再到现在两分天下的Android、ios,无...

iOS UITextField 切换到表情键盘 ios表情输入法

iOS快速集成QQ表情键盘我们常在开发中需要制作常见的类似QQ的表情键盘,如果自己去实现会非常复杂,笔者推荐一个开源项目,集成非常简单。Demo演示:如果是UITextView,导入#import"...

java windows 浮层 java分层窗格

“科技+IP”让中华优秀传统文化焕发新生近日,电影《哪吒2》票房再次刷新历史纪录,登顶全球动画电影票房榜首。《哪吒2》《黑神话:悟空》等围绕中国经典文化IP改编的文化娱乐作品,都以前沿视效技术与中华优...

63页战略分析逻辑架构图PPT,满足你对高效率和专业性的所有想象(附下载)

页战略分析逻辑架构图PPT模板,品牌营销战略的构成分享职场干货,提升能力!为职场精英打造个人知识体系,升职加薪!页战略分析逻辑架构图PPT模板如何拿到分享的源文件:请您关注本头条号,然后私信本头条号“...

android屏蔽广告 host管理 爱玩机工具箱

彻底屏蔽安卓广告的实用指南,打造无广告安卓手机本内容来源于@什么值得买APP,观点仅代表作者本人|作者:期望氢气球在现代的移动设备中,广告无处不在,无论是在应用程序中还是在网页上。一方面作为安卓开发...

IDC运维团队组织架构 idc运维工程师职责

IT运维岗位可以分为哪几种?个运维岗详解IT运维岗位可以分为哪几种呢?下面和千锋广州小编一起来看看吧!IT运维岗位以工作内容分类大致可以划分为以下几种岗位:IDC机房运维售前运维桌面运维监控运维实施运...

「软件架构」InfoQ 软件架构和设计趋势报告2020年4月

软件架构可能不是你想象的那个样子软件架构在敏捷社区中存在争议。在许多人的经验中,架构只会导致毫无价值的会议和无关紧要的文件,“地图不是领土”的说法可以恰当地概括这一观点。然而,架构不佳的应用程序很快就...

java整站系统源码 javaweb完整项目源码网站

基于SpringBoot的CMS系统,拿去开发企业官网真香(附源码)前言推荐这个项目是因为使用手册部署手册非常完善,项目也有开发教程视频对小白非常贴心,接私活可以直接拿去二开非常舒服开源说明系统%开...

Android 画布(android 绘画)

Google正式发布Android,已发布至AOSP整理|苏宓出品|CSDN(ID:CSDNnews)有些猝不及防,Android正式版本来了,相比年月发布的Androi...