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 是一门编程语言& ...
随机推荐
- opencv入门系列教学(七)改变颜色空间、提取彩色对象
0.序言 之前的博客里我们介绍了opencv在图像上的基本操作,下面我们来进行稍微深入一点的介绍,从这里开始我们可以发现opencv库能给我们带来的更多更有趣的功能.从现在开始,我们将逐步深入了解 ...
- 笔记:如何使用postgresql做顺序扣减库存
如何使用postgresql做顺序扣减库存 Ⅰ.废话在前面 首先这篇笔记源自于最近的一次需求,这个临时性需求是根据两份数据(库存数据以及出库数据) 算出实际库存给到业务,至于库存为什么不等于剩余库存, ...
- python variable scope 变量作用域
python 中变量的作用域经常让我感到很迷 In Python, on the other hand, variables declared in if-statements, for-loop b ...
- canal数据同步
前面提到数据库缓存不一致的几种解决方案,但是在不同的场景下各有利弊,而今天我们使用的canal进行缓存与数据同步的方案是最好的,但是也有一个缺点,就是相对前面几种解决方案会引入阿里巴巴的canal组件 ...
- 根据短链生成二维码并上传七牛云(Java)
通过短链生成二维码并上传七牛云(Java) 前言 网上这种帖子其实也是很多,大部分搜出来的是CSDN的,然后点进去一看都几乎一样:所以这次给个自己实践的例子记录. 这次也是通过搜索得到的一部分能实现这 ...
- Linux下Sed替换时无法解析变量
1.问题描述 用sed替换文件中的IP时,想替换成$es_ip中的值,但是却不能解析这个变量$es_ip sed -ri 's/([0-9]{1,3}\.){3}[0-9]{1,3}/$es_ip/g ...
- uni-app中websocket的使用 断开重连、心跳机制
前言 最近关于H5和APP的开发中使用到了webSocket,由于web/app有时候会出现网络不稳定或者服务端主动断开,这时候导致消息推送不了的情况,需要客户端进行重连.查阅资料后发现了一个心跳机制 ...
- 20210715 noip16
考场 乍一看 T1 像是二分答案,手玩样例发现可以 \(O(k^2)\) 枚举点对,贪心地更新答案,完了?有点不信,先跳了 T2 的形式有点像逆序对,但没啥想法 T3 的式子完全不知道如何处理,一看就 ...
- noip模拟47
原版在 \(linux\) 本地写完没保存关机给没了-- 再简单写一下 \(t2\) 用 \(dp\) 转移 \(f[i]=\sum _ {j=last[a[i]]}^{i-1} f[j]\) 用前缀 ...
- Linux内核学习之2号进程kthreadd
Author : Toney Email : vip_13031075266@163.com Date : 2020.12.04 Copyright : ...