SHELL编程入门

  • 一、hello world
  • 二、编写一个多条语句的脚本
  • 三、变量
  • 四、运算符
  • 五、判断指令
  • 六、条件判断
    • 1、if
  • 2、case
    • 3、for
    • 4、while
  • 七、读取用户输入
  • 八、函数
    • 1、系统函数
    • 2、自定义函数
    • 3、cut 剪切文件文本
    • 4、sed 追加内容
    • 5、sort 排序

一、hello world

  1. 新建学习文件夹:mkdir shell_test
  2. 新建文件:touch hello-world.sh
  3. 编写脚本:vim hello-world.sh
#!/bin/bash
#关键词echo:输出
echo 'hello world'
  1. 执行脚本:bash hello-world.sh/sh hello-world.sh

二、编写一个多条语句的脚本

创建一个文件,并且插入一段内容

#!/bin/bash
touch newfile.txt
echo '文章内容插入' >> newfile.txt

三、变量

  1. export A:全局变量
  2. $n:表示命令后更的参数($0表示当前命令)
# 1、vim  test_.sh
# 2、输入内容:
==========================
#!/bin/bash
echo "$0 $1 $2 $3"
==========================
输入:bash test_.sh
输出:test_.sh
输入:bash test_.sh a b c d
输出:test_.sh a b c
  1. $#:输出参数数量
# 2、输入内容:
==========================
#!/bin/bash
echo "$0 $1 $2 $3"
echo $#
==========================
输入:bash test_$ a b c d
输出:test_$ a b c
输出:4
  1. $ * 和 $@:输出所有参数
  2. $?:上一条命令的执行状态(0:正确执行,其他:报错)

四、运算符

  1. expr(计算数字之间必须要空格)
    expr 3 + 2
    expr 3 - 2
    exprexpr 3 + 2\* 4
  2. $ [运算符]:
    s=$[(3+2)*4]
    echo $s

五、判断指令

  1. 判断条件:
    (1)整数之间的比较:
    小于:-lt 小于等于:-le
    等于:-eq
    大于:-gt 大于等于:-ge
    不等于:-ne
    (2)读写权限:
    有读的权限:-r
    有写的权限:-w
    有读写的权限:-rw
    (3)文件类型判断:
    常规文件:-f
    文件存在:-e
    目录存在:-d

六、条件判断

1、if

范例:

if [ 条件判断 ]
then满足条件业务逻辑
elif [ 条件判断 ]
then满足条件业务逻辑
fi

实例:

#!/bin/bash
A=1
B=1
if [ $A -eq 1 ]
thenecho 'test-a1'
elif [ $B -eq 2 ]
thenecho 'test-b2'
fi

2、case

范例:

A=3
case $A in'条件1')逻辑业务;;'条件1')逻辑业务;;'条件1')逻辑业务;;
esac

实例:

#!/bin/bashA=3
case $A in1)echo 1;;2)echo 2;;3)echo 3;;
esac

3、for

# 方式1
for(( i=1;i<=10;i=i+1 ))
doecho $i
done#方式2
for i in [数组]
doecho $i
done
#!/bin/bash
# 方式1
for(( i=1;i<=10;i=i+1 ))
doecho 'test'$i'.txt'
done#方式2
for i in 11 22 33 44
doecho $i
done

4、while

#!/bin/bashi=0
while[ $i -le 10]
doehco $i
done

七、读取用户输入

  1. read
    -t :等待用户输入时间
    -p:输入提示
    NAME:输入的参数
#!/bin/bashread -t 7 -p "输入参数:" NAME
echo $NAME

八、函数

1、系统函数

  1. basename:截取路径中文件的名称
$ basename ./shell_read.sh
shell_read.sh
  1. dirname:返回文件路径
$ dirname /home/rcc/桌面/shell_test/shell_read.sh
/home/rcc/桌面/shell_test

2、自定义函数

案例 求和函数

#!/bin/bash
function sum()
{s=0# 参数1 + 参数2s=$[ $1 + $2 ]echo "$s"
}read -p "数值1:" n1
read -p "数值2:" n2
sum $n1 $n2

3、cut 剪切文件文本


cut_bash.sh:

#!/bin/bashecho "================剪切第一列================"
# 在data2.txt文件下追加剪切的数据
cut -d " " -f 1 data.txt >> data2.txt
# 在data2.txt文件下覆盖剪切的数据
cut -d " " -f 3 data.txt >> data3.txt
cut -d " " -f 1 data.txtecho "================剪切第二,三列================="
cut -d " " -f 2,3 data.txt

data.txt:

1 2 3
1 2 3
1 2 3
1 2 3

结果:

4、sed 追加内容

追加操作:


指令:

  1. 错误处理
    mac系统报错:
    ➜ bash sed "2a 666 666" sed.txt
    sed: 1: "2a 666 666": command a expects \ followed by text
    原因:mac自带的sed命令有点老
    解决:brew install gnu-sed

  2. 案例

# 第二行追加 ‘666 666’  源文件不改变
bash sed "2a \666 666" sed.txt# 删除以 wo 开头的行
bash sed "/wo/d" sed.txt
# 删除第2行
bash sed "2d" sed.txt# 替换
bash sed "s/wo/aa/g" sed.txt# 将文件第2行删除 并将wo替换成aaa
bash sed -e "2d" -e "s/wo/aaa/g" sed.txt

5、sort 排序

# -t : 按照:分割   |   -nr 依照数值大小倒叙   |   -k 2 指定第2列排序
➜  bash sort -t : -nr -k 2 sort.txt
aa:70:4.1
cd:60:4.7
bd:50:4
bb:40:4.5
➜  bash sort -t : -n -k 2 sort.txt
bb:40:4.5
bd:50:4
cd:60:4.7
aa:70:4.1

【SHELL】shell脚本入门相关推荐

  1. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  2. linux Shell(脚本)编程入门实例讲解详解

    linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集, ...

  3. Linux之Shell脚本入门

    一.Shell概述 Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核. Shell还是一个功能强大的编程语言,易编写.易调试.灵活性强. 二.Shell脚本入门 1.脚本格 ...

  4. Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向

    本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...

  5. Linux Shell脚本入门教程系列之(十五) Shell函数简介

    本文是Linux Shell脚本系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之后,函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰 ...

  6. Linux Shell脚本入门教程系列之(十四) Shell Select教程

    本文是Linux Shell脚本系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句 ...

  7. Linux Shell脚本入门教程系列之(十三)Shell分支语句case … esac教程

    本文是Linux Shell脚本系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之 后,分支语句非常实用,基本上高级语言都支持分支语句(pytho ...

  8. Linux Shell脚本入门教程系列之(十二)Shell until循环

    本文是Linux Shell脚本系列教程的第(十二)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上两篇文章Linux Shell系列教程之(十)Shell for循环 ...

  9. Linux Shell脚本入门教程系列之(十一)Shell while循环

    本文是Linux Shell脚本系列教程的第(十一)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上一篇Linux Shell系列教程之(十)Shell for循环中, ...

  10. Linux Shell脚本入门教程系列之(十)Shell for循环

    本文是Linux Shell脚本系列教程的第(十)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 基本任何语言都有自己的循环语句,Shell当然也不例外,继上一篇之后,今天 ...

最新文章

  1. django 模板里面for循环常用的方法
  2. JAVA实现N皇后问题(回溯法)
  3. 使用Java EE的ManagedExecutorService异步执行事务
  4. java mongo api_MONGODB的javaAPI简单应用
  5. 网站颜色变黑白的CSS代码,Chrome、火狐、IE
  6. Xmind 常用快捷键列表(官方推荐)
  7. 在Nutz中给Druid配置数据库加密
  8. 华为设备VRRP+MSTP冗余负载均衡实现
  9. UnityVS(2012)安装教程
  10. EXFO 收购RF over CPRI 测试方案提供商Absolute Analysis
  11. 了解“黑马程序员”有感
  12. 使用PS排版制作一寸照片
  13. WebView打不开或者显示异常可能原因
  14. 论坛php 图片上传,Discuz! X3 论坛文件图片上传尺寸:小于2M的修改方法
  15. wireshark Fiddler抓包分析与解密https Fiddler修改https请求和响应
  16. android如何打开apk文件怎么打开方式,.apk文件用苹果系统怎么打开_apk文件苹果怎么打开...
  17. java js highcharts_highcharts java饼图
  18. 出租权不适用于计算机软件,TRIPS协议下我国软件产业知识产权保护问题研究
  19. app如何添加广告位 uni_uniapp给全端小程序添加激励广告详细教程
  20. 因为计算机丢失D3DCOMPILER_47.dll 的解决方法

热门文章

  1. linux环境下(SUSE 11)安装ArcSDE 10.0 的注意事项(Oracle 11g)
  2. 使用浏览器打开exe文件
  3. 大小写英文字母对应的ASCII值
  4. 访问学者办理签证的问题整理!
  5. 机器视觉工程师应该具备哪些技能?
  6. 2020 年度开发者工具 Top 100 名单!
  7. 法坤老师:百度网盘密道转存12.0群文件自动转存发布咯
  8. 文件损坏如何修复?简单的方法
  9. [Unity-25] Unity中让游戏对象消失或隐藏的几种方法
  10. java jdk 1.8中lambda表达式常用方法