【linux】shell脚本 循环 echo输入输出 函数 shell调试

news/2024/5/6 1:37:14/文章来源:https://blog.csdn.net/m0_73189710/article/details/127674596

1.循环 for/do/done

        shell脚本的for循环结构和C语言不一样,它类似于某些编程语的foreach循环。

#!/bin/bash
for FRUIT in apple banana pear; doecho "I like $FRUIT"
done

 FRUIT(可自定义变量)是一个循环变量,第一次循环$FRUIT的取值是apple,第二次取值是banana,第三次取值是pear

while/do/done

        while的用法和C语言类似。比如一个验证密码的脚本:

#!/bin/bashecho "请输入密码:"
read PASSWORD
while [ "$PASSWORD" != "123456" ];doecho "sorry,try again"
read PASSWORD
done

 下面的例子是通过算数运算控制循环次数:

#!/bin/bashCOUNTER=1
while [ "$COUNTER" -lt 10 ];doCOUNTER=$(($COUNTER+1))echo "$COUNTER Here we go again"done

 break/continue

        break[n]可以指定跳出几层循环: continue 跳过本次循环,但不会跳出循环。
break跳出,continue 跳过。
2.位置参数和特殊变量
        有很多特殊变量是被shell自动赋值的,我们已经遇到了?和$1,其他常用的位置参数和特殊变量在这里总结一下:
        

 例程:

#! /bin/bash
echo "The program $0 is now running"
echo "The first parameter is $1"
echo "The second parameter is $2"
echo "The parameter list is $@"
shift
echo "The first parameter is $1"
echo "The second parameter is $2"
echo "The parameter list is $@

 3.输入输出

        echo       显示文本行或变量,或者把字符串输入到文件

 管道     可以通过|把一个命令的输出传递给另一个命令做输入

                cat myfile | more
                ls -l | grep "myfile"
tee     把结果输出到标准输出,另一个副本输出到响应文件。
例程:把ls -l显示出来后,再输入一份ts.txt 文件重定向

 4.函数

        和C语言类似,shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表。

例程:

#! /bin/bash
fun()
{ echo "Function foo is called"
}
echo "-=start=-"
fun
echo "-=end=-"

 

6.shell调试

        shell提供了一些用于调试脚本的选项,如:             

                -n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
                -v 一边执行脚本,一边将执行过的脚本命令打印到标准输出
                -x 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。。
                这些选项有三种常见的使用方法:。
                1.在命令行提供参数。 如:
                        $ sh -x ./script.sh
                2.在脚本开头提供参数。如:
                        #! /bin/sh -x
                3.在脚本中用set命令启用或禁用参数。如:
#! /bin/bash
if [ -z "$1" ] ; then
set -x
echo "ERROR: Insufficient Args."
exit 1
set +x
fi

 set x和set +x分别表示启用和禁用x参数,这样可以只对脚本中的某一段进行跟踪调试。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_411683.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何发表计算机SCI或者EI论文? - 易智编译EaseEditing

首先是期刊的选择 1、期刊档次 自己文章的水平自己应该是非常清楚的,也可以请导师帮忙评估文章的创新性和研究价值,选定一个适合文章发表的期刊范围。 2、期刊的领域偏好 不同的期刊尽管有时已经给出了自己的发表文章的领域,但是你只要认真…

python基于PHP+MySQL的在线音乐点歌系统

音乐是人们永恒的追求。自古有以来就有语音绕梁三日的佳话,由此几千年来我国人民对音乐的重视程度。为了让音乐得到更好的传播,让更多的人能够听到美妙的音乐。我们开发了PHP在线音乐点歌系统 PHP在线音乐点歌系统是一个音乐爱好者的乐土,本系统采用PHP:MySQL进行开…

Android开发使用Room(SQLite封装)操作数据库

一、Room介绍 Android采用Sqlite作为数据库存储。Sqlite代码写起来繁琐且容易出错,所以开源社区里逐渐出现了各种ORM(Object Relational Mapping)库。这些开源ORM库都是为了方便Sqlite的使用,包括数据库的创建,升级&am…

【计组 期末版】1.计算机系统概论(一)勇闯期末考试

【计组 期末版】1.计算机系统概论(一)搞定期末 前言 博主主页:潮.eth的博客_CSDN博客-C学习,C学习,数据结构and算法领域博主 文章目录:【计组 期末版】计算机组成原理笔记目录 正文 文章目录【计组 期末版】1.计算机系统概论&…

Java NIO 关键概念之 Buffer

一、前言 Java NIO 的三大关键概念之一是 Buffer,在一些文章/源代码中,我们也经常会看到 Buffer 相关的信息。Buffer 到底是什么,Buffer 的基本使用方法是什么,这是本文主要要说的。 二、Buffer 的基本概念 Buffer自 JDK1.4 引…

快速教你如何搭建数据驱动自动化测试框架?

一、前言 说到数据驱动自动化测试,你会不会有这样的疑问:数据怎么管理?数据怎么才能驱动测试用例执行?到底怎么样才算数据驱动?那么本篇文章就教你如何进行数据驱动测试,相信你一定能对数据驱动自动化测试…

拓端tecdat|R语言向量自回归模型(VAR)及其实现

全文链接:http://tecdat.cn/?p6916 原文出处:拓端数据部落公众号 澳大利亚在2008 - 2009年全球金融危机期间发生了这种情况。澳大利亚政府发布了一揽子刺激计划,其中包括2008年12月的现金支付,恰逢圣诞节。因此,零售…

巧妙使用多个旧路由器无线中继提升网络速度

巧用多个路由器进行无线桥接或无线中继,提升网络速度 一、设备选择 1、百兆旧路由器,3-4个,用于无线中继WIFI信号,输出给多WAN路由器(DI-8200) 历史遗留百兆旧路由器3个,型号分别为腾达FH456…

3、用手机模拟器上的Autojs连接电脑vscode

文章目录1、下载模拟器2、在模拟器上安装Autojs3、连接vscode1、下载模拟器 这里推荐雷电模拟器 https://www.ldmnq.com/?n6005 2、在模拟器上安装Autojs 3、连接vscode 打开autojs打开侧边栏,然后选择连接电脑,打开服务器模式然后复制这个IP地址 4.…

浅谈 Mybatis 动态数据源切换是如何实现的

前言 小憩是辣么的让人神往,就像备战高考靠窗位置的那个你,肆无忌道的放空自己,望着深蓝色宁静的天空,思考着未来该何去何从,近处一颗高大魁梧的银杏树在炎炎夏日中尽情的摇曳着自己嫩绿的枝丫,迸发出无尽的…

计算机毕业设计ssm+vue基本微信小程序的高速公路服务区充电桩在线预订系统 uniapp 小程序

项目介绍 随着网络技术的发展,当前人们的生活模式发生了巨大的变化,特别是以电子商务为代表的产业影响了人们的生活。当前,电子商务成为振兴国家经济的重要手段,电子商务为人们的生活提供了极大的便利,帮助企业降低销售成本,提高销售效率。高速公路服务区作为传统的实体行业,经…

BGP BFD测试案例

一、BFD原理 1.1 BFD技术简介 一种全网统一、检测迅速、监控网络中链路或者IP路由的双向转发连通状况,并未上层应用提供服务的技术。 1.2 BFD会话建立方式和监测机制 ●BFD的标识符: (1)BFD建立会话存在标识符的概念&#xff…

中小企业数字化思考:数字化转型应该走自己的路

随着数字化的发展,以及数字中国概念的形成,和以前国央企宣布数字化转型时的不同,现在越来越多的企业开始寻求数字化转型,促使自身业务能够更好的发展。现在看过去,各行各业都有大量企业进行了数字化转型规划&#xff0…

【Mac】VSCode 更新1.73版本后JSTS代码跳转异常

前言 今天有小伙伴MacOS更新了VS Code版本后,说工程内的代码跳转全部异常了,没法正确跳转。搞了两三个小时没搞出来,找到了我,让我帮忙瞧瞧。排查下来发现这问题有点意思,故此记录一下。 问题 排查姿势 1. 提示没有定…

Skywalking9.2.0监控浏览器

Skywalking9.2.0监控浏览器 安装skywalking-client-js npm install skywalking-client-js --save在main.js添加信息 import ClientMonitor from skywalking-client-jsrouter.afterEach(() > {ClientMonitor.setPerformance({service: 服务名,serviceVersion: 版本号,pagePat…

基于模糊小波神经网络的空中目标威胁评估(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 在现代战争中, 随着信息化和智能化的飞速发展, 以及作战环境的日益复杂, 实时而准确地评估目标威胁, 不仅为空战决策提供科学的…

程序人生:技术水平低,就这还敢写自动化项目实战经验丰富?

今年部门要招两个自动化测试,这几个月我面试了几十位候选人。发现一个很奇怪的现象,面试中一问到元素定位、框架api、脚本编写之类的,很多候选人都对答如流。但是一问到实际项目,比如 “如何从0开始搭建自动化体系”、“如果让你来…

资深大牛纯手写RabbitMQ 核心笔记,还有谁?

RabbitMQ简介 RabbitMQ是消息代理(Message Broker),它支持多种异步消息处理方式,最常见的有: Work Queue:将消息缓存到一个队列,默认情况下,多个worker按照Round Robin的方式处理队列中的消息。每个消息只…

CART回归树算法

【题目1】 表1为拖欠贷款人员训练样本数据集,使用CART算法基于该表数据构造决策树模型,并使用表2中测试样本集确定剪枝后的最优子树。 表1 拖欠贷款人员训练样本数据集编号 房产状况 婚姻情况 年收(千元) 拖欠贷款1 是 单身 125 否2 否 已婚 100 否3 否 单身 70 否4 是 已婚…

一本通1064;奥运奖牌计数

#include <iostream> using namespace std; int main() {int n, Jin, Yin, Tong;int JinSum 0, YinSum 0, TongSum 0, sum;cin >> n;for (int i 1; i < n; i) // 循环n次{cin >> Jin >> Yin >> Tong; // 输入一天获得的金银铜牌数JinSum …