当前位置: 首页 > news >正文

Linux大数据方向shell

一、概述
shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核,还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。


 二、shell入门
1.输出hello world
touch helloworld.sh(创建一个bash文件)
vim helloworld.sh(编辑文件)
vim进去后编写:
#!/bin/bash(指定解析器)
echo "helloworld"
脚本常用的执行方式
第一种:sh或bush+绝对路径或者相对路径
第二种:采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)
(1)赋予脚本的+权限:chmod + x hellloworld.sh
(2)执行脚本:
./helloworld.sh(相对路径)
/home/cs/dateas/helloworld.sh(相对路径)
第三种:在脚本的路径前加上. 或者source可以使脚本内容在当前shell里执行,而无需打开子shell,此时打印变量a是有值的,继承了,这就是为什么每次改完profile文件后都要source,而其他的当脚本内容解释,子shell关闭回到父shell中,不会继承,此时打印变量a是没有值的,一般用source的机会比较小

三、变量
1.常用系统变量
$HOME、$PWD、$SHELL、$USER等
在datas文件家里查看系统变量的值:echo $HOME
显示当前shell中所有变量:$ set

2.自定义变量
(1)基本语法
定义变量:变量名=变量值,注意=号前后不能有空格
撤销变量:unset变量名
声明静态变量:readonly变量,注意:不能unset
(2)变量定义规则
变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
等号两侧不能有空格
在bash中,,变量默认类型都是字符串类型,无法直接进行数值运算
变量的值如果有空格,需要使用双引号或单引号括起来
export 变量名:可以把变量提升为全局环境变量,可供其他shell程序使用

3.特殊变量
(1)$n:n为数字,$0代表该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如$({10})
#!/bin/bash
echo $0
echo $1
echo $2
./cs.sh 1 2 :1对应$1参数,2对应$2参数

(2)
$#:获取所有输入参数个数,常用于循环
$*:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
$@:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
$?:最后一次执行的命令返回状态,如果这个变量的值为0,证明上一个命令正确执行,如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确

四、运算符
$((运算符))或者$[运算式]


五、条件判断
1.基本语法
test condition
[ condition ](注意condition前后要由空格)
注意:条件非空即为true

2.常用判断条件
(1)两个整数之间的比较:
-eq 等于(equal)        -ne 不等于(not equal)
-lt 小于(less than)        -le 小于等于(less equal)
-gt (greater than)        -ge 大于等于(greater equal)

(2)按照文件权限进行判断
-r:有读的权限(read)
-w:有写的权限(write)
-x:有执行的权限(execute)

(3)按照文件类型进行判断
-e:文件存在(existence)
-f:文件存在并且是一个常规的文件(file)
-d:文件存在并且是一个目录(directory)

六、流程控制
1.基本语法
(1)单分支
if [条件判断式];then
程序
fi
或者
if [条件判断式]
then
程序
fi
(2)多分支
if [条件判断式]
than
程序
eles
程序
fi
注意事项:
(1)[条件判断式],中括号和条件判断式之间必须有空格
(2)if后要有空格

http://www.lryc.cn/news/509926.html

相关文章:

  • 爬虫 APP 逆向 ---> shopee(虾皮) 电商
  • axios 常见的content-type、responseType有哪些?
  • 从零开始C++游戏开发之第七篇:游戏状态机与回合管理
  • 【全开源】Java多语言tiktok跨境商城TikTok内嵌商城送搭建教程
  • mac启ssh服务用于快速文件传输
  • 《探索 Apache Spark MLlib 与 Java 结合的卓越之道》
  • 使用 Python 创建多栏 Word 文档 – 详解
  • WebPack3项目升级webpack5的配置调试记录
  • Mysql的MHA高可用及故障切换
  • 【ES6复习笔记】箭头函数(5)
  • 单片机学习笔记——入门51单片机
  • Docker Run使用方法及参数详细说明
  • 面试场景题系列:设计限流器
  • 【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块
  • 网狐旗舰版源码搭建概览
  • vue3中使用vuedraggable实现拖拽
  • leetcode 7. 整数反转
  • Nginx单向链表 ngx_list_t
  • go语言中的字符串详解
  • Windows脚本清理C盘缓存
  • 分布式协同 - 分布式事务_2PC 3PC解决方案
  • 永磁同步电机负载估计算法--自适应扩张状态观测器
  • 【HarmonyOS应用开发——ArkTS语言】购物商城的实现【合集】
  • Python二维码生成器qrcode库
  • Python:模拟(包含例题:饮料换购 图像模糊 螺旋矩阵)
  • git分支与部署环境的关系以及开发规范
  • 2024最新鸿蒙开发面试题合集(一)-HarmonyOS NEXT Release(API 12 Release)
  • 【mybatis】详解 # 和 $ 的区别,两者分别适用于哪种场景,使用 $ 不当会造成什么影响
  • Java面试题,数据结构,图的最短路径算法应用于社交网络分析
  • Tree数据处理