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 是一门编程语言& ...
随机推荐
- VS2017 创建并测试 C++ dll
生成DLL 创建工程: Create new project -> 选择Visual C++ -> Windows Desktop -> Dynamic-Link Library ( ...
- JavaSE基础之Java中的数据类型
基本数据类型:8个 整数类型(4):byte short int long 浮点类型(2):float double 字符类型:char 布尔类型:boolean 引用数据类型:3个 数组 类:cla ...
- UOS LoongArch 上成功安装.NET Core 3.1
龙芯.NET团队正式发布了.NET Core 3.1 For LoongArch, 具体参见龙芯开源网站 http://www.loongnix.cn/index.php/Dotnet . 进入安装包 ...
- Object-源码
Object的结构 类构造器 一个类必须要有一个构造器的存在 , Object类源码中,是看不到构造器的,系统会自动添加一个无参构造器. Object obj = new Object(): equa ...
- 详细解读go语言中的chnanel
Channel 底层数据结构 type hchan struct { qcount uint // 当前队列中剩余元素个数 dataqsiz uint // 环形队列长度,即可以存放的元素个数 buf ...
- 使用ogr裁剪矢量数据
使用ogr裁剪矢量数据 由来: 近期有个需求,内容是这样的:我们有两个矢量数据,现在要求以一个矢量文件为底板,按字段对另一个矢量文件进行分割,生成若干小的shpfile文件 分析: 经过分析之 ...
- python库--sklearn--流程图
- python库--flashtext--大规模数据清洗利器
flashtext.keyword (flashtext) 类/方法 返回值 参数 说明 .KeywordProcessor() 对象kp case_sensitive=False 是否区分大小写 添 ...
- Request 获取根据页面获取用户输入判断登陆成功或者失败
import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.serv ...
- docker学习笔记(一)--ubunru18.04下面安装docker18.03
我是在本地安装的虚拟机,再搭建的环境,虚拟机的安装可以参考下面的博客: https://blog.csdn.net/u013142781/article/details/50529030 安装好了之后 ...