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 编程 基础用法的更多相关文章

  1. 【转】Shell编程基础篇-下

    [转]Shell编程基础篇-下 1.1 条件表达式 1.1.1 文件判断 常用文件测试操作符 常用文件测试操作符 说明 -d文件,d的全拼为directory 文件存在且为目录则为真,即测试表达式成立 ...

  2. 【转】Shell编程基础篇-上

    [转]Shell编程基础篇-上 1.1 前言 1.1.1 为什么学Shell Shell脚本语言是实现Linux/UNIX系统管理及自动化运维所必备的重要工具, Linux/UNIX系统的底层及基础应 ...

  3. shell编程基础(转载)

    Shell编程基础 原作者 Leal:请参阅页面底部的编者列表. 授权许可: 创作共享署名协议 GNU 自由文档许可证 注意:本文仍然在持续的修订之中,且错漏之处可能较多.如果能够阅读英语的话,可以考 ...

  4. Linux学习之二十一-shell编程基础

    Shell编程基础 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这个应用程序提供了一个 ...

  5. 【Shell 编程基础第二部分】Shell里的流程控制、Shell里的函数及脚本调试方法!

    http://blog.csdn.net/xiaominghimi/article/details/7603003 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...

  6. 7-1 shell编程基础之二

    shell编程基础之二 算数运算 bash中的算术运算:help let +, -, *, /, %取模(取余), **(乘方),乘法符号有些场景中需要转义 实现算术运算: (1) let var=算 ...

  7. 6-2 shell编程基础

    shell编程基础 编程基础 Linus:Talk is cheap, show me the code 程序和编程风格 程序: 程序:算法+数据结构 数据:是程序的核心 算法:处理数据的方式 数据结 ...

  8. shell编程基础练习

    shell作为一个人机交互的接口,在Linux中发挥着很大的作用,而shell编程则是减轻系统工程师工作的利器,这里总结一下shell编程的主要内容(趁着程序运行的空档). 本文的基本结构是shell ...

  9. Linux(五)shell编程基础

    一.Linux shell简介 1.shell概述 Shell 是用户与内核进行交互操作的一种接口,目前最流行的 Shell 称为 bash Shell          Shell 是一门编程语言& ...

随机推荐

  1. vue 引用省市区三级联动(element-ui Cascader)

    npm 下载 npm install element-china-area-data -S main.js import {provinceAndCityData,regionData,provinc ...

  2. 面试官:Redis的事务满足原子性吗?

    原创:码农参上(微信公众号ID:CODER_SANJYOU),欢迎分享,转载请保留出处. 谈起数据库的事务来,估计很多同学的第一反应都是ACID,而排在ACID中首位的A原子性,要求一个事务中的所有操 ...

  3. 20210720 noip21

    又是原题,写下题解吧 Median 首先时限有 2s(学校评测机太烂,加到 4s 了),可以放心地筛 \(1e7\) 个质数并算出 \(s_2\),然后问题变为类似滑动求中位数.发现 \(s_2\) ...

  4. 优化技术专题-线程间的高性能消息框架-深入浅出Disruptor的使用和原理

    前提概要 简单回顾 jdk 里的队列: 阻塞队列: ArrayBlockingQueue主要通过:数组(Object[])+ 计数器(count)+ ReetrantLock的Condition (n ...

  5. openswan协商流程之(三):main_inR1_outI2

    主模式第三包:main_inR1_outI2 1. 序言 main_inR1_outI2()函数是ISAKMP协商过程中第三包的核心处理函数的入口.这里我们主要说明main_inR1_outI2的函数 ...

  6. 图像处理之Canny边缘检测(一)

    一:历史 Canny边缘检测算法是1986年有John F. Canny开发出来一种基于图像梯度计算的边缘 检测算法,同时Canny本人对计算图像边缘提取学科的发展也是做出了很多的贡献.尽 管至今已经 ...

  7. try/catch捕获处理异常

    1.throws是中断处理,后续代码不能执行 try/catch方法体之后的后续代码有没有异常都可以继续执行: 2.当try方法体中出现异常才会执行catch方法体中代码

  8. project read error(项目读取错误)

    maven的pom文件出现project read error 1,打开电脑cmd操作界面,在cmd界面找到打开出错项目的文件夹; 比如我的项目文件夹在D:\>eclipse-jee-file\ ...

  9. CodeForce-799C Fountains (记忆化DP)

    Fountains CodeForces - 799C 某土豪想要造两座喷泉.现在有 n 个造喷泉的方案,我们已知每个方案的价格以及美观度.有两种合法的货币:金币和钻石.这两种货币之间不能以任何方式转 ...

  10. Kubernetes-Pod介绍(三)-Pod调度

    前言 本篇是Kubernetes第六篇,大家一定要把环境搭建起来,看是解决不了问题的,必须实战. Kubernetes系列文章: Kubernetes介绍 Kubernetes环境搭建 Kuberne ...