shell知识点(一)
Shell
1.概述
Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核
还是一个功能相当强大的编程语言,易编写.易调试.灵活性强
2.shell解析器
查看linux提供的shell解析: cat /etc/shells
Sh和 bash是常用的 bash包含了其他的功能,进行了重新编写
查看默认解析器:echo $SHELL (centos默认的解析器是bash)
3.Shell 脚本入门
脚本格式
脚本为 #!/bin/bash 开头 (指定的解析器)
创建脚本 touch 脚本名.sh
例如:创建脚本并在脚本中输入helloworld
Touch helloworld.sh
Vi helloworld .sh
#!/bin/bash
Echo “helloworld”
Shell脚本入门
脚本是将需要执行的命令保存到文本中,按照顺序执行,他是解释型的,不需要编译
1、脚本格式
2、脚本以#!/bin/bash开头(指定解析器)
#!/bin/bash
#添加描述信息
#Name:谁编写的脚本
#DESC:脚本的描述,作用是什么
#PATH:路径(脚本的路径)
#CREATETIME:创建日期
#UPATETIME:更新日期
实例:
创建一个shell脚本:
1.删除class21下的test文件夹
2.在class21新建一个文件夹test2,在test2中创建3个子文件夹dir1,dir2,dir3
3.在dir2中新建一个文件student.txt
4.在student.txt中添加一个zhangsan
5.打印“任务执行完毕,2019-12-14 09:32:00”
1、编写脚本:
1.#!/bin/env bash 或者 #!/bin/bash
2.添加脚本的描述信息(姓名、描述、路径、创建日期、更新日期等)
3.开始写脚本
[root@jinghang ~]# mkdir class21
[root@jinghang ~]# cd class21/
[root@jinghang class21]# ll
总用量 0
[root@jinghang class21]# vim shell.sh
#!/bin/env bash
1.删除class21下的test文件夹 # 创建class21/test文件 mkdir -p root/class21/test # 删除
rm -rf /root/class21/test
2.新建在class21新建一个文件夹test2,在test2中创建3个子
文件夹dir1,dir2,dir3
mkdir -p /root/class21/test2/dir{1…3}
3.在dir2中新建一个文件student.txt
进入dir2
cd /root/class21/test2/dir2
添加student.txt文件
touch student.txt
4.在student.txt中添加一个zhangsan
echo “张三” >> student.txt
5.打印“任务执行完毕,2019-12-14 09:32:00"
echo "任务执行完毕 date "+%Y-%m-%d %H:%M:%S""
#!/bin/env bash
rm -rf /root/class21/test
mkdir -p /root/class21/test2/dir{1…3}
cd /root/class21/test2/dir2
touch student.txt
echo “zhangsan” >> student.txt
echo "任务执行完毕 date "+%Y-%m-%d %H:%M:%S""
执行方式:
(3)脚本的常用执行方式
第一种:采用bash或sh+脚本的相对路径或绝对路径(不用赋予脚本+x权限)
sh+脚本的相对路径
[jinghnag@hadoop101 datas]$ sh helloworld.sh
Helloworld
sh+脚本的绝对路径
[jinghnag@hadoop101 datas]$ sh /home/jinghnag/datas/helloworld.sh
helloworld
bash+脚本的相对路径
[jinghnag@hadoop101 datas]$ bash helloworld.sh
Helloworld
bash+脚本的绝对路径
[jinghnag@hadoop101 datas]$ bash /home/jinghnag/datas/helloworld.sh
Helloworld
第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x,推荐采用这种方式)
(a)首先要赋予helloworld.sh 脚本的+x权限
[jinghnag@hadoop101 datas]$ chmod +x helloworld.sh
(b)执行脚本
相对路径
[jinghnag@hadoop101 datas]$ ./helloworld.sh
Helloworld
绝对路径
[jinghnag@hadoop101 datas]$ /home/jinghnag/datas/helloworld.sh
Helloworld
注意:第一种执行方法,本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限。第二种执行方法,本质是脚本需要自己执行,所以需要执行权限。
4 Shell中的变量
4.1系统变量
常用的有$HOME $PWD $SHELL $USER 等
例:
1查看系统变量的值 Echo $HOME
2 显示当前Shell中所有变量 set
4.2 自定义变量
4.2.1.语法
定义变量:变量=值 中间不能有空格
撤销变量:unset 变量
声明静态变量:readonly 变量 这个变量只能读,不能修改或者撤销
4.2.2规则
变量名称可以由字母/数字和下划线组成,但是不能以数字开头,环境变量名建议大写
等号两侧不能有空格
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
变量的值如果有空格,需要用双引号或单引号括起来。
例:
定义变量A A=5
查看变量 $A
重新赋值 A=3
撤销变量A unset A
声明静态变量B readonly B=2
变量无法进行数值计算
变量的值如果有空格,需要使用双引号或单引号括起来
4.2.3把变量提升为全局环境变量 可供其他shell程序使用
Export + 变量名
4.3 特殊变量
4.3.1 $n
n功能:n为数字, n 功能:n为数字,n功能:n为数字,n代表该脚本名称,$1-$9代表第一到第九个参数, 十以上的参数需要用大括号包含
例:
4.3.2$#
$# 功能:获取所有输入参数个数,常用于循环
4.3.3$* $@
∗功能:代表命令行中所有的参数, * 功能:代表命令行中所有的参数,∗功能:代表命令行中所有的参数,*把所有的参数看成一个整体
@功能:功能一样,但是 @ 功能:功能一样,但是@功能:功能一样,但是@是把每个参数区分对待
4.3.4 $?
$? 功能:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个 命令正确执行;如果非0.则证明上一个命令执行不正确了。
shell知识点(一)的更多相关文章
- shell知识点小结
目录 引言 shell中的数组 数组的定义 数组的使用 实际的例子 shell中大小的比较 shell中的括号 shell中函数的定义 杂项知识点 字符串转数组 常用判断标志 linux后台运行相关 ...
- shell知识点
各个项目以实践为主.原理及更多细节介绍,请查看官方文档: 例如:bash,grub,postfix,pam,fastcgi,httpd,rsync等诸多项目. 各种总结表格 http://www.cn ...
- shell 知识点
Q:1 Shell脚本是什么.它是必需的吗? 答:一个Shell脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文 ...
- shell知识点(二)
Shell 中的数组 Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: 方式2: arr=(value1 value2 value3) (这种方式带值) ...
- shell知识点:${} 的神奇用法
为了完整起见,我这里再用一些例子加以说明 ${ } 的一些特异功能:假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt我们可以用 ${ } 分别替换获得不同的值 ...
- 05 shell编程之正则表达式
正则表达式&&文本处理利器 学习目标: l 掌握正则表达式的运用 l 掌握sed.awk文本处理工具的使用 目录结构: 正则表达式 正则表达式概述 l 正则表达式:使用单个字 ...
- Linux命令大全汇总,让你工作更有效率!
基础命令 useradd:用户名 -m:创建新用户 passwd 用户名:为用户设置密码(当创建新用户后,就需要设置密码) whoami:查看当前用户名 exit :退出当前用户,返回之前切换过来的用 ...
- 老男孩IT教育-每日一题汇总
老男孩IT教育-每日一题汇总 第几天 第几周 日期 快速访问链接 第123天 第二十五周 2017年8月25日 出现Swap file….already exists以下错误如何解决? 第122天 2 ...
- Bash shell编程的语法知识点(1)
Bash shell脚本编程知识点如下(初学,不全,欢迎讨论补充): shell简介 脚本的简单介绍 变量和引用 算术运算 交互式编程 选择判断 条件测试 循环 函数 shell简介 shell是一种 ...
随机推荐
- 算法 - k-means++
Kmeans++算法 Kmeans++算法,主要可以解决初始中心的选择问题,不可解决k的个数问题. Kmeans++主要思想是选择的初始聚类中心要尽量的远. 做法: 1. 在输入的数据点中随机选 ...
- Kick Start 2019 Round B Energy Stones
对我很有启发的一道题. 这道题的解法中最有思维难度的 observation 是 For simplicity, we will assume that we never eat a stone wi ...
- Dedesql数据库类详解(二次开发必备教程)
其实数据库类织梦之前就有一个介绍,http://help.dedecms.com/v53/archives/functions/db/,这篇文章讲解了数据库类的一些常见的使用方法,不过没有结合例子去介 ...
- PB动态游标代码段
sql = "select p_partno from p_partno_rm group by p_partno order by p_partno"declare my3 d ...
- Mac OS 下定制终端颜色
方法 有五种方法, 参考网站,我使用的是 Oh My Zsh 方案一:(通过 .bash_profile 文件自定制) 方案二:(也是修改 ~/.bash_profile) 方案三:(三方插件 Oh ...
- js里生成guid
function guid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { | , ...
- C#中static修饰符的作用
static在C#中表示的是静态的,比如一个静态的字段是归类型所有,而非归对象所有,也就是说,在调用这个字段时,只能用类型去调,而不能用对象. 实例字段时随着对象创建而创建,对象销毁而销毁,而静态字段 ...
- 给Repater增加等号
//不改变数据结构的情况下,增加行号.对Application服务器压力增大,减少DB服务器压力. protected void repShow_ItemDataBound(object sen ...
- hiper、sitespeed性能工具
https://github.com/pod4g/hiper hiper: A statistical analysis tool for performance testing https: ...
- LLVM4.0与3.5编译phase对比
说是LLVM4.0和3.5的对比,其实是Clang的4和3.5的对比.在调试Clang编译源码的过程中,发现-S选项在4.0和3.5中的处理不一样,后来使用命令验证了这个事情 jourluohua@j ...