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.mzph.cn/news/861440.shtml

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

相关文章

mysql岗位实习----教务系统管理

教务管理系统 一、DDL CREATE TABLE users (user_id int(11) NOT NULL AUTO_INCREMENT COMMENT 用户ID,username varchar(50) NOT NULL COMMENT 用户名,password varchar(255) NOT NULL COMMENT 密码,gender enum(男,女) NOT NULL COMMENT 性别,email varchar(100) DEFAULT N…

C++初学者指南第一步---14.函数调用机制

C初学者指南第一步—14.函数调用机制 文章目录 C初学者指南第一步---14.函数调用机制1.记住&#xff1a;内存的结构2.函数调用是如何工作的3. 不要引用局部变量4. 常见编译器优化5. Inlining内联 1.记住&#xff1a;内存的结构 堆&#xff08;自由存储&#xff09; 用于动态存…

解决Java中依赖注入的最佳实践

解决Java中依赖注入的最佳实践 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 引言 在Java开发中&#xff0c;依赖注入&#xff08;Dependency Injection&am…

Redis-实战篇-缓存雪崩

文章目录 1、缓存雪崩2、解决方案&#xff1a; 1、缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力。 2、解决方案&#xff1a; 给不同的key的TTL添加随机值利用Redis集群提高服务的可用性…

华为电脑重装系统如何操作?电脑Win11系统重装注意什么?图文详细解答

随着科技的不断进步&#xff0c;操作系统更新换代的步伐也日益加快。华为电脑作为市场中的佼佼者&#xff0c;其搭载的Windows 11系统凭借其强大的性能和丰富的功能受到了用户的广泛好评。然而&#xff0c;随着使用时间的推移&#xff0c;系统可能会出现各种问题&#xff0c;如…

华为昇腾910B3 NPU训练最佳实践

作者: chuanzhubin, jintao 目录# 环境准备微调推理部署 环境准备# 实验环境&#xff1a;8 * 昇腾910B3 64G (设备由chuanzhubin提供, 感谢对modelscope和swift的支持&#xff5e;) # 创建新的conda虚拟环境(可选) conda create -n swift-npu python3.10 -y conda activate…

验证码技术 easy-captcha

依赖 <!-- easy-captcha用来生成验证码&#xff0c;由于jdk9以后&#xff0c;内置JavaScript去掉了&#xff0c;所以需要导入这个org.openjdk.nashorn --> <dependency><groupId>com.github.whvcse</groupId><artifactId>easy-captcha</arti…

牛客挑战赛75 D. 不存在的玩家(sg图dp)

题目 思路来源 灵茶山群群友 https://blog.csdn.net/Code92007/article/details/110354429 题解 其实想了想&#xff0c;和20年小米邀请赛决赛这个G题的dp思路是一样的&#xff0c;姑且称为sg图dp吧 按sg值从大到小dp&#xff0c;每次补上全局sg值-1的这些点&#xff0c; …

网约车停运损失费:2、协商过程

目录 &#x1f345;点击这里查看所有博文 随着自己工作的进行&#xff0c;接触到的技术栈也越来越多。给我一个很直观的感受就是&#xff0c;某一项技术/经验在刚开始接触的时候都记得很清楚。往往过了几个月都会忘记的差不多了&#xff0c;只有经常会用到的东西才有可能真正记…

AUTOSAR汽车电子嵌入式编程精讲300篇-智能网联汽车CAN总线-智能网联汽车车内网络

目录 2.1车内网络架构 2.2 CAN总线OSI七层模型 2.2.1 CAN总线物理层 2.2.2 CAN总线数据链路层 2.2.3 CAN总线应用层 2.3 车内网络威胁分析 本文篇幅较长,分为多篇,文章索引详见 智能网联汽车CAN总线-发展现状 智能网联汽车CAN总线-智能网联汽车车内网络 智能网联汽…

16、Spring~配置类

16、Spring~配置类 配置类源码解析ConfigurationClassPostProcessor类postProcessBeanDefinitionRegistry()方法processConfigBeanDefinitions()方法 ConfigurationClassUtils类checkConfigurationClassCandidate()方法 ConfigurationClassParser类parse()方法processConfigura…

数据赋能(131)——体系:数据转换——概述、关注焦点

概述 数据转换是指将数据从一种格式、结构或类型转换为另一种格式、结构或类型的过程。 数据转换操作属于数据整理过程。 它通常涉及数据清洗、数据映射、数据合并、数据拆分等操作&#xff0c;以确保数据的正确性和一致性。 数据转换的目的在于将原始数据转换为更易于处理…

Houdini 通过wedge来做模拟参数对比 (PDG TOP)

我们的设定如下例子 这是个简单的布料悬挂的例子。上方两个角分别被固定住了&#xff0c;然后在distance约束下布料下垂。 我们现在的目的是想要对比不同的streach stiffness对模拟的影响。 第一步&#xff1a;找到stiffness参数&#xff0c;右键expression->edit expre…

iis控制文件或者文件夹是否允许被访问

问题 出于数据或者网络安全&#xff0c;禁止扫描工具直接扫描到某些包含敏感信息的文件&#xff0c;尤其比如日志、配置&#xff0c;如何不写代码&#xff0c;使用iis处理呢&#xff1f; 假设有如下网站&#xff0c;访问http://localhost:6001/Logs/20240626.txt就会出现日志&…

AI开发Windows环境搭建

文章目录 1. GPU 支持检查2. 安装 Anaconda3. 创建 PyTorch 虚拟环境3.2 创建虚拟 PyTorchEnv 环境3.3 检查、激活、推出虚拟环境3.4 虚拟环境中python包管理3.5 虚拟环境中安装 PyTorch 框架 4. TensorFlow 安装 1. GPU 支持检查 打开 Task Manager (任务管理器&#xff09;&…

DPDK使用make编译并运行示例程序

环境&#xff1a; VMware Workstation 16 Pro 16.2.4 虚拟机系统&#xff1a;Centos 8 DPDK版本&#xff1a;stable-20.11.10 下载源码后&#xff0c;使用meson和ninja编译完成、配置并挂载大页、内核和VFIO设置完成&#xff0c;在dpdk源码目录下的build/…

Apache Kylin的入门学习

Apache Kylin的入门学习可以从以下几个方面进行&#xff1a; 1. 了解Kylin的基本概念 定义&#xff1a;Apache Kylin是一个开源的分布式分析引擎&#xff0c;它基于Hadoop和HBase构建&#xff0c;提供Hadoop/Spark之上的SQL查询接口及多维分析&#xff08;OLAP&#xff09;能…

【LeetCode】每日一题:两数之和

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答…

java干货 浅拷贝和深拷贝

文章目录 一、浅拷贝1.1 特点1.2 代码实现 二、深拷贝2.1 特点 三、总结 一、浅拷贝 1.1 特点 基本数据类型字段的拷贝&#xff1a;值被复制&#xff0c;新对象和原对象的字段在内存中是不同的引用类型字段的拷贝&#xff1a;对于引用类型&#xff0c;它们的引用被复制&#…

docker搭建mongo分片集群

1、mongo分片集群 MongoDB分片集群是一种可扩展的数据库架构&#xff0c;用于处理大量数据和高并发访问。它将数据分成多个分片&#xff0c;并将这些分片分布在多个服务器上&#xff0c;从而实现数据的平衡存储和并行处理 。 通过使用MongoDB的分片集&#xff0c;可以实现数据…