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 ]
then
    echo "this is a directory!"
else
    echo "this is not a directory!"
fi

if elif语法】

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

【逻辑 与-a和 或-o

#!/bin/sh
# -a -o
if [ $1 -eq $2 -a $1 = 1 ]
    then
    echo "param1 == param2 and param1 = 1"
elif [ $1 -ne $2 -o $1 = 2  ]
    then
    echo  "param1 != param2 or param1 = 2"
else
     echo "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#"
do
    break
done
echo "you selected $var"

case循环】

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

while循环】

#!/bin/sh
#while test do ... done

num=1
sum=0
while [ $num -le 100 ]                      #le表示小于等于
do
    sum=`expr $sum + $num`
    num=`expr $num + 1`
done
#sleep 5
echo $sum

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

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

相关文章

Web渗透:逻辑越权漏洞

逻辑越权漏洞&#xff08;Business Logic Vulnerability&#xff09;是指攻击者利用应用程序业务逻辑中的漏洞&#xff0c;绕过正常的安全控制&#xff0c;执行未授权的操作。与常见的技术性漏洞不同&#xff0c;逻辑越权漏洞通常与应用程序的功能和流程有关&#xff0c;需要对…

Java初识集合(后续不断补充)

第一次更新时间&#xff1a;2024.6.26 集合概述 Java中的集合就像一个容器&#xff0c;专门用来存储Java对象&#xff08;实际上是对象的引用&#xff0c;但习惯称为对象&#xff09;&#xff0c;这些对象可以是任意的数据类型&#xff0c;并且长度可变。其中&#xff0c;这些…

使用go语言来完成复杂excel表的导出导入

使用go语言来完成复杂excel表的导出导入&#xff08;一&#xff09; 1.复杂表的导入 开发需求是需要在功能页面上开发一个excel文件的导入导出功能&#xff0c;这里的复杂指定是表内数据夹杂着一对多&#xff0c;多对一的形式&#xff0c;如下图所示。数据杂乱而且对应不统一。…

基于单片机和 Arduino 平台的六自由度可控机械手臂

摘 要 : 为了降低机械手臂的设计开发难度 &#xff0c; 并使之尽早地投入应用 &#xff0c; 设计一种基于单片机和 Arduino 平台的六自由度可控机械手臂 。提出六自由度可控机械手臂的控制方案&#xff0c; 给出机械手臂控制系统的结构框图 。 详细设计六自由度可控机械手臂…

1991java Web体检预约管理系统eclipse定制开发mysql数据库BS模式java编程jdbc

一、源码特点 JSP体检预约管理系统是一套完善的web设计系统&#xff0c;对理解JSP java 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&#xff0c;使用…

2024华为数通HCIP-datacom最新题库(变题更新⑤)

请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 请注意&#xff0c;华为HCIP-Datacom考试831已变题 近期打算考HCIP的朋友注意了&#xff0c;如果你准备去考试&#xff0c;还是用的之前的题库&#xff0c;切记暂缓。 1、…

MATLAB-遗传GA-CNN-SVM,基于GA遗传优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类)

MATLAB-遗传GA-CNN-SVM&#xff0c;基于GA遗传优化算法优化卷积神经网络CNN结合支持向量机SVM数据分类(多特征输入多分类) 1.数据均为Excel数据&#xff0c;直接替换数据就可以运行程序。 2.所有程序都经过验证&#xff0c;保证程序可以运行。 3.具有良好的编程习惯&#xf…

linux centos rabbitmq3.7.5 一键安装部署

linux centos rabbitmq3.7.5 一键安装部署 一、基础理论二、kafka和rocketmq、rabbitmq的区别三、下载所需安装包四、一键安装 一、基础理论 RabbitMQ是一个实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff0c;其作用主要体现在以下几个方面&a…

Docker 查看源地址/仓库地址,更改

一、源地址文件配置路径。若有docker文件夹&#xff0c;没有json&#xff0c;可以新增&#xff0c;复制进去内容 /etc/docker/daemon.json {"registry-mirrors": ["https://dockerhub.azk8s.cn","https://hub-mirror.c.163.com"&#xff0c;&q…

“北京到底有谁在啊”影视APP开发,解锁最简单的快乐

随着电视剧《玫瑰的故事》在腾讯视频APP热播&#xff0c;APP也增加了很多热度&#xff0c;一款丰富的影视APP&#xff0c;无论是热门大片、经典影视剧、还是最新综艺节目&#xff0c;能畅享无限精彩的影视内容&#xff01; 开发影视APP&#xff0c;需要专业的技术服务商来解决…

k8s手撕架构图+详解

“如果您在解决类似问题时也遇到了困难&#xff0c;希望我的经验分享对您有所帮助。如果您有任何疑问或者想分享您的经历&#xff0c;欢迎在评论区留言&#xff0c;我们可以一起探讨解决方案。祝您在编程路上顺利前行&#xff0c;不断突破技术的难关&#xff0c;感谢您的阅读&a…

使用nvm切换node版本时报错:exit status 1解决办法

作者介绍&#xff1a;计算机专业研究生&#xff0c;现企业打工人&#xff0c;从事Java全栈开发 主要内容&#xff1a;技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流&#xff08;SCI论文两篇&#xff09; 上点关注下点赞 生活越过…

项目开发 TCP-Socket连接功能实现(Android端)

前段时间在公司做项目的时候遇到了一个功能需要使用TCP-Socket连接硬件设备进行通信&#xff0c;查了很多资料也只是关于HTTP-Socket相关的&#xff0c;没法满足项目的要求&#xff0c;后来查到一个相关的插件&#xff0c;现在有时间和大家分享一下。 项目简单介绍&#xff1a…

基于STM32+华为云IOT设计的智能冰箱(华为云IOT)

文章目录 一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】摘要 1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发 二、部署华为云物联网平台2.1 物联网平台介绍2.2 开通物联网服务2.3 创建产品&#xff08…

Stateflow快速入门系列(-):构造并运行 Stateflow 图

Stateflow 提供了一种图形语言&#xff0c;包括状态转移图、流程图、状态转移表和真值表。您可以使用 Stateflow 来说明 MATLAB 算法和 Simulink 模型如何响应输入信号、事件和基于时间的条件。 Stateflow 使您能够设计和开发监控、任务调度、故障管理、通信协议、用户界面和混…

Windows USB设备驱动开发 - 常见概念的解释

我们听到许多 USB 术语几乎交替抛出。 它们都是什么意思&#xff1f;假设我们看到类似 “多亏了 USB 3.0&#xff0c;我可以将 SuperSpeed U 盘连接到电脑的 xHCI 主机控制器&#xff0c;并更快地复制文件。” 让我们了解该句子中的 USB 术语。 USB 3.0、USB 2.0 和 USB 1.0 请…

大模型笔记1: Longformer环境配置

论文: https://arxiv.org/abs/2004.05150 首先保证电脑上配置了git. git环境配置: https://blog.csdn.net/Andone_hsx/article/details/87937329 3.1、找到git安装路径中bin的位置&#xff0c;如&#xff1a;D:\Program Files\Git\bin 找到git安装路径中git-core的…

C++ Primer 中文版 第5版 读书笔记

读书过程中发现&#xff0c;读得越多&#xff0c;忘得越多。因此记录读书笔记 1.2 初始输入输出 向流写入数据 <<运算符&#xff08;输出运算符&#xff09;接受两个运算对象&#xff1a;左侧的运算对象必须是一个ostream对象&#xff0c;右侧的运算对象是要打印的值。…

限域传质分离膜兼具高渗透性、高选择性特点 未来应用前景广阔

限域传质分离膜兼具高渗透性、高选择性特点 未来应用前景广阔 分离膜是一种具有选择性透过功能的薄层材料。限域传质分离膜是基于限域传质机制的分离膜&#xff0c;兼具高渗透性、高选择性的特点。限域传质是流体分子通过与其运动自由程相当传质空间的过程&#xff0c;流体分子…

TiDB-从0到1-数据导出导入

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容 一、数据导出 TiDB中通过Dumpling来实现数据导出&#xff0c;与MySQL中的mysqldump类似&#xff0c;其属于…