一段代码慢慢了解shell

shell中注释一段代码 红色之间的一段代码备注释掉了。 阅读详情

下面通过一小段代码分析作为shell语言的入门

#! /bin/sh

#A CD collection

add_record_tracks() {
  echo "Enter track information for this CD"
  echo "When no more tracks enter q"
  cdtrack=1
  cdtitle=""
  while [ "$cdtitle" != "q" ]
  do
    echo "Track $cdtrack, track title?"
    read tmp
    cdtitle=${tmp%%,*}
    if [ "$tmp" != "$cdtitle" ]; then
      echo "Sorry, no commas allowed"
      continue
    fi
    if [ -n "$cdtitle" ]; then
      if [ "$cdtitle" != "q" ]; then
        insert_track $cdcatnum,$cdtrack,$cdtitle
      fi
    else
      cdtrack=$((cdtrack-1))
    fi
    cdtrack=$((cdtrack+1))
  done
}


代码解析:


#! /bin/sh
首先#表示这一行内容是一行注释,也就是说在shell程序中#用来注释。这一行内容其实也没什么意思,无非就是告诉读者这个文件里的程序是写得shell程序,运行时用/bin/sh来运行,最好养成个好习惯,在shell文件第一行都写这个 


#A CD collection
还是注释


add_record_track(){
}

这一块的内容是函数的定义,定义一个函数,在文件其他地方也可以调用,相信大家是知道什么是函数的吧~~,注意:千万别忘了‘()’哦,亲


echo "Enter track information for this CD"
这里的echo是输出语句(也可以叫打印语句),相当于c语言里的printf函数功能,后面的语句用“”引起来,其实不用“”也是会输出这条语句的,此处暂且认为是增加可读性吧


echo "When no more tracks enter q"
同上


cdtrack=1
声明一个变量cdtrack,并且将其赋值为1,shell中变量没有数据类型之分,你认为他是什么,他就是什么啦,而且不用提前声明的,想用直接写就好了,方便的很呐


cdtitle=""
同上


while [ "$cdtitle" != "q" ]
do
    。。。。。
    。。。。。
done

这一段代码东西稍微多一些,首先相信大家能看的出这事一个while循环,shell中还有常用的for循环,格式是这个样子的,循环语句可以写在。。。。。处
for variable in values
do    
    。。。。。
    。。。。。
done
挺清楚的吧,接着回来说这个while循环,先说一下'$'这个符号,他是代表获取某一个变量的值,$cdtitle就是cdtitle的值。接下来'[' 这个符号不一般呀,它是一种判断,相当于shell中test函数,[ "$cdtitle" != "q" ]是表明“如果cdtitle的值不等于q”。


read tmp
cdtitle=${tmp%%,*}

read是标准输入函数,相当于c语言里的scanf函数,用户输入的字符串保存在tmp里面,tmp变量也是不用事先声明的哈~~cdtitle=${tmp%%,*}是将tmp的值赋给cdtitle,这里面也是有学问的,为什么不直接cdtitle=$tmp呢?答案是${tmp%%,*}这是一种格式‘,*’代表截取字符串的意思,也就是说当我们输入“abc,def,ghw”的时候,实际赋给cdtitle的值为abc,懂了吗?还没说完,%%是干什么用的呀?哈哈,截取字符串当然有规则了,为什么输入“abc,def,ghw”是赋值cdtitle为abc,不是ghw呢?实际上%%表示从左最小匹配,如果是一个%,则表示从右最小匹配,也就是说,dtitle=${tmp%,*},当我们输入“abc,def,ghw”的时候,实际赋给cdtitle的值为ghw,懂了吧,亲!


下面的代码相信聪明的你也就都明白了~~

ml307 二次开发 中移物联网旗下4g模组官方网站官方教程id=514官方客户不知道啥时候上班 早上10点也说不在服务时间内 找不到官方的sdk下载路径。 阅读详情

相关推荐

从零配置华为S5720交换机VLAN:Web界面与命令行双模式详解(附拓扑图)

本文详细解析华为S5720交换机VLAN配置的全过程,涵盖Web界面与命令行(CLI)双模式操作指南。从基础环境准备到多交换机环境配置同步,特别针对S5720-52X系列交换机的VLANif接口、端口分配策略及交换机堆叠技术进行深入讲解,并附实用拓扑图与配置示例,助力企业网络管理员高效完成VLAN部署。

happy2的博客 1370

shell中截取字符串

字符串截断 1.删除左边字符,保留右边字符 (1) 从头开始删除源字符串tmpstr,直到删除完第一个出现的end_str。 ${tmpstr#*end_str} (2) 从头开始删除源字符串tmpstr,一直删除完最后一个end_str。 ${tmpstr##*end_str} 2. 删除右边字符,保留左边字符 (1) 从尾字符串tmpstr开始删除字符,直到删除完第一个出现的end_str。 ${tmpstr%end_str*} (2) 从尾字符串tmpstr开始删除字符,直到删除完最后一个出现的

dengwodaer的博客 243

转录组数据提取技巧汇总

数据整理是数据分析的前提,而数据的正确提取则是数据整理的前提。

zfyyzhys的博客 1784

shell脚本之read的用法

利用read的功能去做一些简单的密码与网页连通性测试

m0_65109001的博客 1399

嵌入式开发之瑞芯微RK356x--基本环境搭建

嵌入式环境搭建

NexyHO的博客 617

十五、SAP-物料需求计划(MRP)

业务逻辑、功能讲解、图文解析、章节总结

m0_72403327的博客 1092

用shell命令读取文件,然后一行行输出

最近面试中遇到这么一个问题,就是关于用shell自身带的命令,读取文件后一行一行输出。第一反应就是用cat 来读取文件,然后for出来,面试官好像不是很满意。for i in `cat main.go`do    echo $idone格式出问题。采用whilecat main.go|while read tmpdo    echo $tmpdone结果就正常了。...

carler_czj的博客 7万+

uniapp+google map不显示

uniapp+renderJS+google map开发安卓版APP非小程序,google map小叉号不显示,google map自定义marker右上角的小叉号如何去掉,uniapp+google map不显示

renkai721的专栏 526

Shell中Read用法简介

一. read读取单个词.$read name$tony ma$echo $nametony ma$read id passwd$allen passwd$echo $id$allen$echo $passwd$passwd...

cuijianli8434的博客 238

Python爬招聘网站:Selenium+ActionChains破解滑动验证码,批量采集岗位数据(新手可跑)

通过本文实战,你不仅学会了用Selenium+ActionChains破解滑动验证码,还掌握了爬虫的核心优化思路——“模拟人类行为”是突破反爬的关键。这套逻辑不仅适用于招聘网站,还能迁移到其他有滑动验证码的平台(如电商、资讯网站)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1187

爆肝5万字❤️Open3D 点云数据处理基础(Python版)

本文为Open3D 点云数据处理基础教程(Python版),小白也能轻松上手!还等什么呢,学起来!

孙悟空 13万+

direct path read/read temp等待事件

当会话从磁盘直接读取数据块到PGA(绕过SGA)时,发生direct path read/read temp等待事件 ,下图简要描述了这种方式的读取方式: 如果I/O子系统不支持异...

ckm9894的博客 1011

heygem本地部署报错:SQLite3 can only bind numbers, strings, bigints, buffers, and null...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位大厂资深架构师和一线开发多年实战经验沉淀,

**My Coding Family** 3246

shell中注释一段代码的方法

if false; then code code fi

楼中望月 1622

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

shell中如何进行一段代码的注释

<br />   在shell编程中,我们常常需要把一些语句注释掉,让它不执行,对单号或者少数几行shell脚本来说,在每行前面增加#符号就可以达到目的了,代码如下:<br />#cp ./a.txt ./b.txt #mkdir -p {1,2,4}/{2,4,6} #echo "ok"<br /> <br />但如果我们需要对一大段的shell脚本进行注释,倘若我们都在每行前面添加#,这对我们来说,确实不是一件很令人舒服的事情,那么,在shell中,有没办法采用类似c语言的注释/* ...*/来达到

tenfyguo的技术专栏 3万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java调用shell的一段代码

private final static String FILL_EVENT_SCRIPT = "/opt/soft/kettle/run/run_report.sh";   //shell脚本的路径位置 private void processEvent(String reportName, String context) throws Exception {         logger.

power的专栏 342

很经典的一段shell 代码

#!/bin/bash APP_NAME=agent DIST_TAR_NAME=agent.tgz   WORK_PATH=`pwd`   TMPDIR=$WORK_PATH/mytmp   BASE_PATH=/usr/local/sa/agent   NAKED_SH=$TMPDIR/install-nk.sh   INSTALL_LOG=$BASE_PATH/in...

ronon77的专栏 266

【Shell】Shell脚本重复执行某一段代码

shell脚本重复执行一段代码

miracleoa的博客 1662

Shell简单了解

什么是Shell? Shell是命令解释器(Command interpreter),是Unix操作系统的用户接口,程序从用户接口得到输入信息,shell将用户程序及其输入翻译成操作系统内核(kernel),能够识别的指令,并且操作系统内核执行完将返回的输出通道通过Shell再呈现给用户。 Shell也是一门编程语言,即shell脚本,shell是解释执行的脚本语言,可以直接调用linux命令。 一个系统可以存在多个shell,可以通过 cat/etc/shells 命令查看系统中安装的shell,不

sky_zzk的博客 343

Shell截取文本一段区间的方法

假设有一段日志,我需要截取 2019/09/23到2019/09/29 之间期间的日志。 那么,我利用shell怎么去截取呢 2019/09/16 09:56:00 [warn] 11#11: could not build optimal proxy_hea 2019/09/16 09:56:00 [warn] 11#11: could not build optimal proxy_hea ...

第一天 3927

linux shell中实现循环日期的实例代码

这篇文章主要介绍了linux shell中实现循环日期的实例代码,文中还给大家提到了LINUX SHELL遍历日期(指定输入两个日期)的实现方法,感兴趣的朋友跟随小编一起看看吧 下面通过一段代码给大家介绍linux shell中实现循环日期,具体代码如下所示: 1 2 3 4 5 6 7 8 9 #!/usr/bin/env bash start_date=“20180726” end_date=“20180830” while [ “startdate"−le"start_date" -le "start

xp5xp6的博客 533

一段shell脚本分析

工作中碰到这样的需求: 1、每天定时要执行python脚本生成excel 2、将生成的excel拷贝到特定目录下 3、通过python发送脚本发送给特定的接收者 因为之前没有接触过shell脚本,同事帮忙写了一份,具体内容如下。 #!/bin/bash ...

dideng8675的博客 182

一段部署shell

一段部署shell #!/usr/bin/env bash # 目标服务器IP HOST=$1 # 目标服务器端口 PORT=225 # 部署目录 DEPLOY_DIR=$2 # 环境 ENV=$3 # 备份目录 BAK_DIR="/deploy_bak/" BAK_FILE="${BAK_DIR}api_"$(date +%Y%m%d%H%M%S)".tar.gz" RUNTIME_DIR="${DEPLOY_DIR}/runtime" echo "---部署开始---" echo "---备份-

U.R.M.L 223

linux通过shell编写一段程序,输出1~10的平方数,实验五SHELL编程基础1

实验五 SHELL编程基础(1)1、实验目的要求(1)了解 Shell 的作用和主要分类。(2)掌握Shell作用和主要分类等基础知识。 (3)了解 Bash的一般语法规则。(4)LINUX环境下常用命令和VI编辑器的操作。2、实验主要内容练习编写简单的 shell程序,题目如下:。1.用while语句创建一个根据输入的数值求累加和(1+2+3+。。。。+n)的shell程序。 2.使用...

weixin_32349561的博客 4143

shell下的一段测试代码

导出的数据带有不可见字符 cat -v后显示^@ 所以用一下方式来处理: [code="java"] cat -v $tmpfile | sed 's/[\^\@]//g' | awk '$2 < '"$now"' - 86400' | while read key value do ... done [/code] 这里, $tmpfile是导出文件,在这个k...

Alex的垃圾筐 172
上一篇: find命令使用心得
下一篇: ubuntu安装svn全过程
zsoftdevelop
博客等级 码龄18年 12粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值