Linux之Shell脚本入门
一、Shell概述
Shell是一个命令行解释器,它接受应用程序/用户命令,然后调用操作系统内核。
Shell还是一个功能强大的编程语言,易编写、易调试、灵活性强。
二、Shell脚本入门
1.脚本格式
脚本以#!/bin/bash开头
2.第一个Shell脚本
(1)需求
创建一个Shell脚本,输出helloworld
(2)实操
touch helloworld.sh
vim helloworld.sh
在helloworld.sh中输入如下内容:
#!/bin/bash
echo 'helloworld'
(3)执行方式
第一种:采用bash或sh+脚本的
sh+脚本的相对路径(不用赋予脚本+x权限)
sh helloworld.sh
sh+脚本的绝对路径
sh /home/depo/shell/helloworld.sh
bash+脚本的相对路径
bash hellworld.sh
bash+脚本的绝对路径
bash /home/depo/shell/helloworld.sh
第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
首先赋予helloworld.sh脚本的+x权限
chmod 777 helloworld.sh
执行脚本
相对路径: ./helloworld.sh 绝对路径: /home/depo/shell/helloworld.sh
注意:第一种执行方式,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。
3.第二个Shell脚本:多命令处理
#!/bin/bash
touch test.txt
echo "i love java" >> test.txt
三、Shell中的变量
1.系统变量
(1)常用系统变量
$HOME、$PWD、$SHELL、$USER等
(2)实操
查看系统变量的值
[depo@dev shell]$ echo $HOME
/home/depo
2.自定义变量
(1)基本变量
定义变量: 变量=值
撤销变量: unset 变量
声明静态变量: readonly 变量 注意:不能unset
(2)变量定义规则
变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
等号两侧不能由空格
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算
变量的值如果有空格,需要使用双引号或单引号括起来
(3)实操
1.定义变量A
A=5
echo $A
2.给变量A重新赋值
A=8
echo $A
3.撤销变量A
unset A
echo $A
4.声明静态的变量B=2,不能unset
[depo@dev shell]$ readonly B=2
[depo@dev shell]$ echo $B
2
[depo@dev shell]$ unset B
-bash: unset: B: 无法反设定: 只读 variable
[depo@dev shell]$
5.在bash中,变量默认是字符串类型
[depo@dev shell]$ C=1+2
[depo@dev shell]$ echo C
C
[depo@dev shell]$
6.可把变量提升为全局环境变量,供其他Shell程序使用
将变量C提升为全局变量:
export C
修改helloworld.sh:
#!/bin/bash
echo "helloworld"
echo $C
运行:
[depo@dev shell]$ ./helloworld.sh
helloworld
1+2
3.特殊变量:$n
(1)基本语法
$n:n为数组,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如果${10}
(2)实操
touch parameter.sh
vim parameter.sh
#!/bin/bash
echo "$0 $1 $2 $3"
执行该脚本
[depo@dev shell]$ sh parameter.sh abc yfy nihao
parameter.sh abc yfy nihao
4.特殊变量:$
(1)基本语法
$#:获取所有输入参数个数,常用于循环
5.特殊变量:$*、$@
(1)基本语法
$*:这个变量代表命令行中所有的参数,把所有的参数看成一个整体
$@:这个变量也代表命令行中所有的参数,不过把每个参数区分对待
(2)实操
打印输入的所有参数
vim parameter.sh
#!/bin/bash
echo "$0 $1 $2 $3"
echo $#
echo $*
echo $@
执行:
[depo@dev shell]$ sh parameter.sh abc yfy nihao
parameter.sh abc yfy nihao
3
abc yfy nihao
abc yfy nihao
5.特殊变量:$?
(1)基本语法
$?:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行
(2)实操
判断helloworld.sh脚本是否正确执行
[depo@dev shell]$ ./helloworld.sh
helloworld
1+2
[depo@dev shell]$ echo $?
0
[depo@dev shell]$
四、运算符
1.基本语法
(1)$((运算符))或$[运算符]
(2)expr +,-,*,/,%. 加减乘除取余
2.实操
(1)计算3+2的值
[depo@dev shell]$ expr 2 + 3
5
(2)计算(2+3)x4的值
expr一步完成计算
expr `expr 2 + 3` \* 4
采用$[运算式]方式
S=$[ (2+4)*4 ]
Linux之Shell脚本入门相关推荐
- Linux:shell脚本入门笔记
目录 Shell简介: 第一个shell脚本: Shell的脚本变量: 条件测试: 控制语句与函数: 代码示例: Shell简介: Shell本身是一个用C语言编写的程序,它是用户使用Linux的 ...
- Linux Shell脚本入门--wget 命令用法详解
Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...
- 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当然也不例外,继上一篇之后,今天 ...
最新文章
- R语言中的esttab命令_R语言︱基本函数、统计量、常用操作函数
- HDU 1556 Color the ball (数状数组)
- mysql的sum函数 如何设置默认值_mysql使用sum()出现null的问题,各种总结
- Material Design实现的美观的登录界面
- [20171120]11G关闭直接路径读.txt
- java LinkedHashMap源码解析
- SpringBoot 的错误处理机制
- ACDSee Photo Studio 8 for Mac v8.0.2283 数字图象编辑处理软件
- python txt转为csv
- 【案例】全国知名网上书城——基于企业中台构建智慧悦读体验
- Acer Linux改win7,宏基台式机win10如何改win7系统_宏基台式机预装win10怎么换win7
- 对投影值进行线性插值之后再进行滤波反投影的Python实现
- 6小时精通springcloud第09讲:微服务安全认证
- Django + ajax
- 第三篇 SG90舵机和HC-SR04测距
- BJFU实验一链表部分题解整合
- SSA麻雀算法优化BP神经网络(SSA-BPNN)回归预测MATLAB代码(有优化前后的对比
- cyq.data mysql_CYQ.Data 数据框架 数据库分页方式及存储过程[SQL2000/SQL2005/Oracle]
- 我的DDK学习经验(转载)
- 【Java学习之代码学习】 Prog26_求第几天的问题