Shell 编程 基础用法
Shell 编程
更改shell脚本权限
chmod u+x shell.sh
标准头部写法
#! /bin/bash
#! /bin/dash
变量使用
a=10
print $a
读取命令行参数
$# # 传递给脚本的参数个数
$@ # 传递给脚本所有的参数
$0 # 当前脚本的名字
$1 # 传递给脚本的第一个参数(后面依次类推)
PS: ./test.sh COMP | head
此处读入的外界参数只有COMP,管道后面的并不会被当作参数
if的4种模式
- 1
if(($# != 2)) 2>/dev/null # 2>/dev/null意为输出错误不再显示到屏幕上,而是到null里
then
echo "$#"
else # else后不用加then
echo "Hello"
fi
- 2
if [ $# -ne 2 ] # [ ]功能等同于test,使用-eq这些,而不是==
then # [ ]中每个字符之间都要有空格
echo "$#"
fi
- 3 dash不支持
if [[ $# < 5 && $# > 2 ]] # [[ ]]非常强大,可以使用逻辑表达式,也可以使用=~正则表达式
then # dash 不支持
echo "$#"
fi
- 4 判断文件是否存在
if test -e $file # test测试后会返回一个值真或假,可测试数字、字符文件
then
echo "Exist" # -e,-r为检测文件是否存在
fi
test详解
=, != # 字符串匹配 (perl里字符串比较使用eq)
-gt,-eq,-ne,-lt # 数字大小判断(perl 里使用==与!=)
-e,-r # 判断文件存在,判断文件存在且可读
-a # and 例:if test $a -gt 10 -a -lt 15
-o
3种for循环
- 1
for((i=1;i<=10;i++)) # 注意此处是双括号
do
echo "Hi"
done
- 2
for i in $(seq 1 10)
do
echo $i
done
- 3 dash写法
while [ $index -gt 0 ]
do
filename="hello$index.txt"
echo "hello $name" > $filename
# $i = $(expr $i - 1)
index=$((index-1))
# echo +++$index
done
依次读取目录下的文件
for file in *.jpg # 读取当前目录下所有的.jpg文件
do
#操作变量的时候要加$,类似Vue的语法
#此处转换.jpg为.png,注意此处的echo,它有打开此文件的作用,若无可能无法将值赋给变量png
png=$(echo "$file" | sed 's/jpg/png/g')
done
for file in * # 读取当前目录所有文件
do
print $file
done
echo的用法
echo的一个作用是读取文件名(并不打开文件)并通过管道传递
echo -n # 不换行输出
echo "hello world" >> a.txt # 追加至a.txt中
echo "hello world" > a.txt # 写入a.txt中
赋值命令行结果给变量
test=$()
test=``
加减运算
num=$(($1 + 1)) # 使用双括号进行运算赋值,$()这种无法进行计算会报错
num=$(expr $1 + 1) # 请注意,每个字符之间一定要有空格
Shell 编程 基础用法的更多相关文章
- 【转】Shell编程基础篇-下
[转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...
- 【转】Shell编程基础篇-上
[转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...
- shell编程基础(转载)
Shell编程基础 原作者 Leal:请参阅页面底部的编者列表. 授权许可: 创作共享署名协议 GNU 自由文档许可证 注意:本文仍然在持续的修订之中,且错漏之处可能较多.如果能够阅读英语的话,可以考 ...
- Linux学习之二十一-shell编程基础
Shell编程基础 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这个应用程序提供了一个 ...
- 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!
http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...
- 7-1 shell编程基础之二
shell编程基础之二 算数运算 bash中的算术运算:help let +, -, *, /, %取模(取余), **(乘方),乘法符号有些场景中需要转义 实现算术运算: (1) let var=算 ...
- 6-2 shell编程基础
shell编程基础 编程基础 Linus:Talk is cheap, show me the code 程序和编程风格 程序: 程序:算法+数据结构 数据:是程序的核心 算法:处理数据的方式 数据结 ...
- shell编程基础练习
shell作为一个人机交互的接口,在Linux中发挥着很大的作用,而shell编程则是减轻系统工程师工作的利器,这里总结一下shell编程的主要内容(趁着程序运行的空档). 本文的基本结构是shell ...
- Linux(五)shell编程基础
一.Linux shell简介 1.shell概述 Shell 是用户与内核进行交互操作的一种接口,目前最流行的 Shell 称为 bash Shell Shell 是一门编程语言& ...
随机推荐
- Qt中的Q_PROPERTY宏浅析
1. Q_PROPERTY Qt提供了一个绝妙的属性系统,Q_PROPERTY()是一个宏,用来在一个类中声明一个属性property,由于该宏是qt特有的,需要用moc进行编译,故必须继承于QObj ...
- kubernetes 使用 PV 和 PVC 管理数据存储
文章链接 容器磁盘上的文件的生命周期是短暂的,这就使得在容器中运行重要应用时会出现一些问题.首先,当容器崩溃时,kubelet 会重启它,但是容器中的文件将丢失--容器以干净的状态(镜像最初的状态)重 ...
- elsa-core:4.ASP.NET Core Server with Elsa Dashboard
在本快速入门中,我们将了解一个最小的 ASP.NET Core 应用程序,该应用程序承载 Elsa Dashboard 组件并将其连接到 Elsa Server. ElsaDashboard + Do ...
- java设计模式—单例模式(包含单例的破坏)
什么是单例模式? 保证一个了类仅有一个实例,并提供一个访问它的全局访问点. 单例模式的应用场景? 网站的计数器,一般也是采用单例模式实现,否则难以同步: Web应用的配置对象的读取,一般也应用单例模式 ...
- 20210823 数数,数树,鼠树,ckw的树
考场 乍一看都不好做 仔细想想发现 T1 的绝对值特别好,轮流选剩余的最大/最小值就行了 T2 又要计数,直接想部分分,发现一个 sb 容斥就有 35ps(但数据锅了,只有 25pts) T3 什么玩 ...
- SpringBoot 如何生成接口文档,老鸟们都这么玩的!
大家好,我是飘渺. SpringBoot老鸟系列的文章已经写了两篇,每篇的阅读反响都还不错,果然大家还是对SpringBoot比较感兴趣.那今天我们就带来老鸟系列的第三篇:集成Swagger接口文档以 ...
- AntDesign VUE:Model组件的Button的事件this指向undefined的问题(箭头函数)
问题 一个很简单的this指向问题引起的报错: 记录下来主要是想看看这玩意到底指向哪里: 真不戳 解决方法 ES6的箭头函数,有人理解它就是没有this指向,我个人理解是它的this指向函数体的上一级 ...
- WPF WPF中解决内存泄露的几点提示与解决方法
http://www.cnblogs.com/LastPropose/archive/2011/08/01/2124359.html 一直以来用WPF做一个项目,但是开发中途发现内存开销太大,用ANT ...
- Maven专题3——生命周期与插件
三套生命周期 Maven有3套相互独立的生命周期,用户可以调用某个生命周期的阶段,而不会对其他生命周期产生影响. 每个生命周期包含一些有先后顺序的阶段,后面的阶段依赖于前面的阶段,意味着用户调用后面的 ...
- Spring Boot 2.x 之 H2 数据库
1. Spring Boot下H2数据库的常用配置项 # 指定数据库的类型 spring.datasource.platform=h2 # 数据库连接地址(文件模式) ## AUTO_SERVER=T ...