Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • 操作系统

    • 学习笔记

    • Shell

      • Shell基础入门
      • Shell学习笔记
        • 基本知识
        • 比较操作
        • 文件判断
        • 局部变量
        • 条件判断数据
        • for循环语句
        • BASH 中有一些保留变量
        • 函数
        • 字符串操作
      • Shell学习笔记-进阶版
    • Linux命令

    • RAID分类详解
    • Page Cache与Page回写
    • 磁盘IO与swap分区
  • 计算机网络

  • 数据结构和算法

  • MySQL

  • Redis

  • Nginx

  • MongoDB

  • 其他

  • 计算机基础
  • 操作系统
  • Shell
Ravior
2011-03-25
目录

Shell学习笔记

# 基本知识

  • 变量赋值时,'='左右两边都不能有空格

  • BASH中的语句结尾不需要分号(";")

  • 除了在变量赋值和在FOR循环语句头中,BASH中的变量使用必须在变量前加$符号

  • 由于BASH程序是在一个新的进程中运行的,所以该程序中的变量定义和赋值不会改变其他进程或原始Shell中同名变量的值,也不会影响他们的运行

  • BASH中的变量既然不需要定义,也就没有类型一说,一个变量即可以被定义为一个字符串,也可以被再定义为整数。如果对该变量进行整数运算,他就被解释为整数;如果对他进行字符串操作,他就被看作为一个字符串

  • 单引号引起的内容会被全部当做普通字符,即全部原样

    NUM=100
    #Print NUM
    echo 'NUM'
    
    1
    2
    3
  • ``倒引号内的字符串会被当作shell命令行解析执行

    list=`ls`
    #Print 文件列表
    echo $list
    
    1
    2
    3
  • expr: 对表达式求值,表达式中,数字和运算符之间要有空格

    SUM=`expr 1 + 3`
    #Print 4
    echo $SUM
    
    1
    2
    3
  • 表达式求值,使用*需要加转义符

    SUM=`expr 1 \* 3`
    #Print 3
    echo $SUM
    
    1
    2
    3
  • []:对被括起来的表达式求值

    i=1
    sum=0
    while [ $i -le 100 ]; do
    	echo $i
    	sum=$[$sum+$i]
    	i=$[$i+1]
    done
    
    1
    2
    3
    4
    5
    6
    7

# 比较操作

Function Operator Command
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge >=
小于或等于 -le <=
空 -z null
不为空 -n !null

推荐在比较时尽量不要使用 -n ,而用 ! -z 来代替。(其中符号 "!" 表示求反操作)

# 文件判断

Operator Function
-e file file 已经存在
-f file file 是普通文件
-s file file 大小不为零
-d file file 是一个目录
-r file file 对当前用户可以读取
-w file file 对当前用户可以写入
-x file file 对当前用户可以执行
-g file file 的 GID 标志被设置
-u file file 的 UID 标志被设置
-O file file 是属于当前用户的
-G file file 的组 ID 和当前用户相同
file1 -nt file2 file1 比 file2 更新
file1 -ot file2 file1 比 file2 更老

# 局部变量

在 BASH 程序中如果一个变量被使用了,那么直到该程序的结尾,该变量都一直有效。为了使得某个变量存在于一个局部程序块中,就引入了局部变量的概念。BASH中,在变量首次被赋初值时加上local关键字就可以声明一个局部变量。

# 条件判断数据

if 语句用于判断和分支,其语法规则和 C 语言的 if 非常相似。

其几种基本结构为:

if [ expression ]  
then        
	statments
fi 
1
2
3
4

if [ expression ] 
then  
	statments  
elif [ expression ] 
then  
	statments 
else  
	statments 
fi
1
2
3
4
5
6
7
8
9

# for循环语句

for $var in   Arr
do 
	statments 
done 
1
2
3
4

# BASH 中有一些保留变量

  • $PWD 表示当前工作路径

# 函数

# 函数的参数数组索引是从1开始的
function sum(){
	echo "参数:$1,$2"
	echo $[$[$1+$2]*$[$2-$1+1]/2];
}
sum 1 100
1
2
3
4
5
6

# 字符串操作

  • 字符串截取 -c 起始位置到结束位置

    STR="12345678"
    echo $STR | cut -c 2-6
    
    1
    2
  • 参数

    # $# 传递到脚本的参数个数
    echo $#
    # $0 脚本名字
    echo $0
    # $1 位置参数
    echo $1
    
    1
    2
    3
    4
    5
    6
#Linux
上次更新: 2022/12/01, 11:09:34
Shell基础入门
Shell学习笔记-进阶版

← Shell基础入门 Shell学习笔记-进阶版→

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式