Shell 编程入门

优质博文:IT-BLOG-CN

【1】x.sh文件内容编写: 固定开头:#!/bin/sh
【2】学习的第一个命令就是echo输出的意思;
【3】其实shell脚本也就是在文件中写命令,但是我们要写的是绝对路径eg:/bin/pwd
【4】运行shell脚本:sh文件名
【5】通过下面脚本进行学习:

#!/bin/sh
/bin/date +%F >> /test/shelldir/ex2.info                                           #data +%F是将日期格式化。>>追加输出
echo "disk info:" >> /test/shelldir/ex2.info
/bin/df -h >> /test/shelldir/ex2.info
echo >> /test/shelldir/ex2.info
echo "online users:" >> /test/shelldir/ex2.info
/usr/bin/who | /bin/grep -v root >> /test/shelldir/ex2.info                        #使用的命令主要来自两个地方:①、/bin/ ②、/usr/bin/  -v:表示排除
echo "memory info:" >> /test/shelldir/ex2.info
/usr/bin/free -m >> /test/shelldir/ex2.info
echo >> /test/shelldir/ex2.info
#write root
/usr/bin/write root < /test/shelldir/ex2.info && /bin/rm /test/shelldir/ex2.info
crontab -e                                                                         #定时执行命令
0 9 * * 1-5 /bin /sh /test/ex2.sh                                                  #表示:每周一到周五的9点执行该脚本。

【6】变量:shell传递数据的一种方式,用来代表每个取值的符号。
Shell的变量有两种:①、永久变量 ②、临时变量。临时变量是shell程序内部定义的,其使用范围只限于定义它的程序,其它程序不可见。包括程序自定义变量、位置变量。永久变量是环境变量。其值不随 shell脚本的执行结束而消失。

【永久变量】:
点击并拖拽以移动​

【自定义变量】: 在使用变量时,要在变量前面加前缀:$,一般变量使用大写字母表示,并且是英文字母开头,赋值号“=”两边没有空格,如:NUM=5STR="A string"。可以将一个命令的执行结果赋值给一个变量:但需要使用命令替换符。NUM=data注意单引号和双引号之间的区别,“”是会将里面的变量值进行输出,‘’会将里面的内容原封不动的进行输出,不会识别里面的变量。使用set查看所有变量。查询$变量。使用unset命令删除指定的变量。

【7】占位变量:shell中还有两种常用的变量,一种是占位变量,还有一种是特殊变量,在编写shell到的时候特别常用:

【位置变量】: ls -l file1 file2 file3...n范围=1-9)在代码里使用$0-9进行替换。也就是说查看file1目录地下的所有文件信息。

#!/bin/sh
DATE=`/bin/date +%Y%m%d`
echo "TODAY IS $DATE"
/bin/ls -l $1
/bin/ls -l $2
/bin/ls -l $3

在命令行输入:sh文件名/test /usr/bin /home。解释:就是让命令中的/test替换脚本中的$1........

【8】特殊变量:
$*这个程序的所有参数;
$#这个程序的参数个数;
$$这个程序的PID
$! 执行上一个程序的PID
$?执行上一个命令的返回值;
$(0-9)显示位置变量;

【9】read:键盘输入,命令:read从键盘读取数据,赋给变量。

#!/bin/sh
read f s t
echo "the first is $f"
echo "the second is $s"
echo "the third is $t"

执行命令: sh文件名先执行,在输入变量。如果输入:sh -x文件名执行 shell脚本,当执行到read时会弹出:read f s t,然后我们根据需求输入,例如:10 20 30

【10】shell的运算: expr命令,对整数进行运算。注意点:
①、expr的计算必须用空格隔开;
②、\*表示转义字符;
③、保持先算乘除后算加减,如果需要优先算法需要加命令替换符;
④、可以对变量进行运算;
【11】test测试命令: 使用test命令可以对文件、字符串等进行测试,一般配合控制语句使用,不应该单独使用。
【12】if语句,语法格式:

if [ -d $1 ]
then
else
fi

【实例展示】

#!/bin/sh
# if test $1 then ... else ... fi
if [ -d $1 ]
thenecho "this is a directory!"
elseecho "this is not a directory!"
fi

if elif语法】

#!/bin/sh
# if test  then ... elif test then ... else ... fi
if [ -d $1 ]
thenecho "is a directory!"
elif [ -f $1 ]thenecho "is a file!"
elseecho "error!"
fi

【逻辑 与-a和 或-o

#!/bin/sh
# -a -o
if [ $1 -eq $2 -a $1 = 1 ]thenecho "param1 == param2 and param1 = 1"
elif [ $1 -ne $2 -o $1 = 2  ]thenecho  "param1 != param2 or param1 = 2"
elseecho "others"
fi

for循环】

#!/bin/sh
# for var in [params] do ... done
for var in 1 2 3 4 5 6 7 8 9 10
do echo "number is $var"
done

select循环】

#!/bin/sh
# select var in [params] do ... done
select var in "java" "c++" "php" "linux" "python" "ruby" "c#"
dobreak
done
echo "you selected $var"

case循环】

#!/bin/sh
read op
case $op ina)echo "you selected a";;b)echo "you selected b";;c)echo "you selected c";;*)echo "error"
esac

while循环】

#!/bin/sh
#while test do ... donenum=1
sum=0
while [ $num -le 100 ]                      #le表示小于等于
dosum=`expr $sum + $num`num=`expr $num + 1`
done
#sleep 5
echo $sum

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

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

相关文章

鸿蒙开发设备管理:【@ohos.batteryInfo (电量信息)】

电量信息 该模块主要提供电池状态和充放电状态的查询接口。 说明&#xff1a; 本模块首批接口从API version 6开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import batteryInfo from ohos.batteryInfo;属性 描述电池信息。 系统能…

php基础语法_面向对象

PHP php代码标记 多种标记来区分php脚本 ASP标记&#xff1a;<% php代码 %> 短标记&#xff1a; 脚本标记: 标准标记&#xff08;常用&#xff09;&#xff1a; 简写风格&#xff1a; ASP风格&#xff1a;<% php代码 %> 注意&#xff1a;简写风格和ASP风格…

web前端——HTML

目录 一、HTML概述 1.HTML是什么&#xff1f; 2.HTML具体化解释 二、HTML基本语法 1.声明 2. Head头标签 3.body身体标签 4.一个html的基本结构 5.标签 6.标签属性 ①属性的格式 ②属性的位置 ③添加多个属性 三、基本常用标签 1.超链接 2.图像标签 ①图像标…

SAP ALV 负号提前

FUNCTION CONVERSION_EXIT_ZSIGN_OUTPUT. *"---------------------------------------------------------------------- *"*"本地接口&#xff1a; *" IMPORTING *" REFERENCE(INPUT) *" EXPORTING *" REFERENCE(OUTPUT) *"…

Docker之jekins的安装

jekins官网地址&#xff1a;Jenkins Plugins &#xff08;https://plugins.jenkins.io/&#xff09; jekins 的docker 官方地址&#xff1a;https://hub.docker.com/r/jenkins/jenkins jekins 的docker 允许命令文档地址&#xff1a; docker/README.md at master jenkinsci…

接口自动化测试框架实战(Pytest+Allure+Excel)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1. Allure 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不…

Mac电脑安装HomeBrew工具(100%成功)

1.Homebrew是什么&#xff1f; homebrew是一款Mac OS平台下的软件包管理工具&#xff0c;拥有安装、卸载、更新、查看、搜索等功能。通过简单的指令可以实现包管理&#xff0c;而不用关心各种依赖和文件路径情况。 2.homebrew常用命令 检测是否安装HomeBrew: brew -v卸载Hom…

输出100以内的质数

质数&#xff1a;只能被1和自身整除的数 let count; for(let i2; i<100; i){for(let j1; j<i; j){if(i % j 0){// 只要能被整除&#xff0c;count就加1count;}} if(count 2) {// 从1到自身被整除完之后&#xff0c;如果count只有两次&#xff0c;则说明i为质数co…

【Web3】Web3.js 启动!并解决Web3 is not a constructor报错

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 本节教大家如何启动Web3.js 目录 Web3 启动&#xff01; 于是很愉快的报错 创建实例&#xff01; 出来了 Web3&#xff1a;模块…

【银河麒麟】高可用触发服务器异常重启,处理机制详解

1.服务器环境以及配置 【机型】物理机 处理器&#xff1a; Intel 内存&#xff1a; 126G 【内核版本】 4.19.90-25.16.v2101.ky10.x86_64 【银河麒麟操作系统镜像版本】 Kylin-Server-10-SP2-Release-Shenzhen-Metro-x86-Build01-20220619 Kylin-HA-10-SP2-Release-S…

数据结构_绪论

1.数据结构的研究内容 研究数据的特性和数据之间的关系 用计算机解决一个问题的步骤 1.具体问题抽象成数学模型 实质: 分析问题--->提取操作对象--->找出操作对象之间的关系(数据结构)--->用数学语言描述 操作对象对象之间的关系 2.设计算法 3.编程,调试,运行 …

内容安全复习 1 - 信息内容安全概述

文章目录 信息内容安全简介网络空间信息内容安全大模型 人工智能简介 信息内容安全简介 网络空间 网络空间是融合物理域、信息域、认知域和社会域&#xff0c;控制实体行为的信息活动空间。 上图展示了网络空间安全的结构。可以看到将网络空间划分为了网络域和内容域两个部分。…

PHP-CGI的漏洞(CVE-2024-4577)

通过前两篇文章的铺垫&#xff0c;现在我们可以了解 CVE-2024-4577这个漏洞的原理 漏洞原理 CVE-2024-4577是CVE-2012-1823这个老漏洞的绕过&#xff0c;php cgi的老漏洞至今已经12年&#xff0c;具体可以参考我的另一个文档 简单来说&#xff0c;就是使用cgi模式运行的PHP&…

群晖系统百度网盘套件卸载之后无法再次安装 ContainerManager项目无法删除

前言 最近重新组了个NAS&#xff0c;在套件迁移的时候遇到个头疼的问题。在用矿神的百度网盘在迁移的时候出错了&#xff0c;于是我自己删掉baiduapp得容器和镜像然后卸载套件。不知道中间出了啥问题&#xff0c;套件是已经卸载了&#xff0c;但是群晖ContainerManager套件中的…

GPT-5对普通人有何影响

这篇文章对ChatGPT的使用方法和提问技巧进行了讨论&#xff0c;重点强调了背景信息和具体提问的重要性。文章清晰地传达了如何提高ChatGPT回答的质量&#xff0c;以及个人在使用ChatGPT时的体会和建议。然而&#xff0c;文章在逻辑组织和表达方面还有一些可以改进的地方&#x…

登录安全分析报告:链家地产

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

最年轻获奖者诞生!一文带你了解历届国家最高科学技术奖获奖人

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 文丨浪味仙 排版丨沛贤 深度好文&#xff1a;4000字丨15分钟阅读 作为国家层面面向科学、技术领域的最高级别奖励&#xff0c;国家最高科学技术奖于 2000 年由国务院设立&#xff0c;每年评选…

Flutter学习目录

学习Dart语言 官网&#xff1a;https://dart.cn/ 快速入门&#xff1a;Dart 语言开发文档&#xff08;dart.cn/guides&#xff09; 学习Flutter Flutter生命周期 点击跳转Flutter更换主题 点击跳转StatelessWidget和StatefulWidget的区别 点击跳转学习Flutter中新的Navigato…

matlab中函数meshgrid

(1) 二维网格 [X,Y] meshgrid(x,y) 基于向量 x 和 y 中包含的坐标返回二维网格坐标。X 是一个矩阵&#xff0c;每一行是 x 的一个副本&#xff1b;Y 也是一个矩阵&#xff0c;每一列是 y 的一个副本。坐标 X 和 Y 表示的网格有 length(y) 个行和 length(x) 个列。 x 1:3; y…

使用 Reqable 在 MuMu 模拟器进行App抓包(https)

1、为什么要抓包&#xff1f; 用开发手机应用时&#xff0c;查看接口数据不能像在浏览器中可以直接通过network查看&#xff0c;只能借助抓包工具来抓包&#xff0c;还有一些线上应用我们也只能通过抓包来排查具体的问题。 2、抓包工具 实现抓包&#xff0c;需要一个抓包工具…