【SHELL】shell脚本入门
SHELL编程入门
- 一、hello world
- 二、编写一个多条语句的脚本
- 三、变量
- 四、运算符
- 五、判断指令
- 六、条件判断
- 1、if
- 2、case
- 3、for
- 4、while
- 七、读取用户输入
- 八、函数
- 1、系统函数
- 2、自定义函数
- 3、cut 剪切文件文本
- 4、sed 追加内容
- 5、sort 排序
一、hello world
- 新建学习文件夹:
mkdir shell_test
- 新建文件:
touch hello-world.sh
- 编写脚本:
vim hello-world.sh
#!/bin/bash
#关键词echo:输出
echo 'hello world'
- 执行脚本:
bash hello-world.sh
/sh hello-world.sh
二、编写一个多条语句的脚本
创建一个文件,并且插入一段内容
#!/bin/bash
touch newfile.txt
echo '文章内容插入' >> newfile.txt
三、变量
- export A:全局变量
- $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
- $#:输出参数数量
# 2、输入内容:
==========================
#!/bin/bash
echo "$0 $1 $2 $3"
echo $#
==========================
输入:bash test_$ a b c d
输出:test_$ a b c
输出:4
- $ * 和 $@:输出所有参数
- $?:上一条命令的执行状态(0:正确执行,其他:报错)
四、运算符
- expr(计算数字之间必须要空格)
expr 3 + 2
expr 3 - 2
expr
expr 3 + 2\* 4
- $ [运算符]:
s=$[(3+2)*4]
echo $s
五、判断指令
- 判断条件:
(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
七、读取用户输入
- read
-t :等待用户输入时间
-p:输入提示
NAME:输入的参数
#!/bin/bashread -t 7 -p "输入参数:" NAME
echo $NAME
八、函数
1、系统函数
- basename:截取路径中文件的名称
$ basename ./shell_read.sh
shell_read.sh
- 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 追加内容
追加操作:
指令:
错误处理
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
案例
# 第二行追加 ‘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脚本入门相关推荐
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
- linux Shell(脚本)编程入门实例讲解详解
linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具.Shell不仅仅是命令的收集, ...
- Linux之Shell脚本入门
一.Shell概述 Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核. Shell还是一个功能强大的编程语言,易编写.易调试.灵活性强. 二.Shell脚本入门 1.脚本格 ...
- Linux Shell脚本入门教程系列之(十六) Shell输入输出重定向
本文是Linux Shell系列教程的第(十六)篇,更多Linux Shell教程请看:Linux Shell系列教程 Shell中的输出和输入的重定向是在使用中经常用到的一个功能,非常实用,今天就为 ...
- Linux Shell脚本入门教程系列之(十五) Shell函数简介
本文是Linux Shell脚本系列教程的第(十五)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之后,函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰 ...
- Linux Shell脚本入门教程系列之(十四) Shell Select教程
本文是Linux Shell脚本系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句 ...
- Linux Shell脚本入门教程系列之(十三)Shell分支语句case … esac教程
本文是Linux Shell脚本系列教程的第(十三)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 上一篇之 后,分支语句非常实用,基本上高级语言都支持分支语句(pytho ...
- Linux Shell脚本入门教程系列之(十二)Shell until循环
本文是Linux Shell脚本系列教程的第(十二)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上两篇文章Linux Shell系列教程之(十)Shell for循环 ...
- Linux Shell脚本入门教程系列之(十一)Shell while循环
本文是Linux Shell脚本系列教程的第(十一)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上一篇Linux Shell系列教程之(十)Shell for循环中, ...
- Linux Shell脚本入门教程系列之(十)Shell for循环
本文是Linux Shell脚本系列教程的第(十)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 基本任何语言都有自己的循环语句,Shell当然也不例外,继上一篇之后,今天 ...
最新文章
- django 模板里面for循环常用的方法
- JAVA实现N皇后问题(回溯法)
- 使用Java EE的ManagedExecutorService异步执行事务
- java mongo api_MONGODB的javaAPI简单应用
- 网站颜色变黑白的CSS代码,Chrome、火狐、IE
- Xmind 常用快捷键列表(官方推荐)
- 在Nutz中给Druid配置数据库加密
- 华为设备VRRP+MSTP冗余负载均衡实现
- UnityVS(2012)安装教程
- EXFO 收购RF over CPRI 测试方案提供商Absolute Analysis
- 了解“黑马程序员”有感
- 使用PS排版制作一寸照片
- WebView打不开或者显示异常可能原因
- 论坛php 图片上传,Discuz! X3 论坛文件图片上传尺寸:小于2M的修改方法
- wireshark Fiddler抓包分析与解密https Fiddler修改https请求和响应
- android如何打开apk文件怎么打开方式,.apk文件用苹果系统怎么打开_apk文件苹果怎么打开...
- java js highcharts_highcharts java饼图
- 出租权不适用于计算机软件,TRIPS协议下我国软件产业知识产权保护问题研究
- app如何添加广告位 uni_uniapp给全端小程序添加激励广告详细教程
- 因为计算机丢失D3DCOMPILER_47.dll 的解决方法