Shell常见命令、语句及函数

一、常用命令

1、grep

grep(global search regular expression and print out the line)命令是一个强大的文本搜索命令

命令格式:

grep [参数] [关键字] <文件名>

注意:

  • 查看某个文件的内容的时候,需要<文件名>

  • grep命令在结合|(管道符)使用的情况下,后面的<文件名>是没有的

  • 可以通过 grep --help 查看grep的帮助信息

参数说明:

  • -c:只输出匹配行的计数。

  • -n:显示匹配行及行号。

  • -v:显示不包含匹配文本的所有行。

精确定位错误代码

grep -nr [错误关键字] *

2、sed

sed 文件编辑工具。因为它编辑文件是以行为单位的

命令格式:

sed [参数] '<匹配条件> [动作]' [文件名]

# 替换指定第n行的第n个匹配内容
sed [参数] 'n<匹配条件>[动作]n' [文件名]

参数说明:

  • -i 表示对文件进行编辑

匹配条件:

  • 匹配条件分为两种:数字行号或者关键字匹配

  • 关键字匹配格式:’/关键字/’

动作详解:

  • -s 替换匹配到的内容

3、awk

awk是一个功能非常强大的文档编辑工具,它不仅能以行为单位还能以列为单位处理文件。

命令格式:

awk [参数] 'BEGIN{...}{动作}END{...}' [文件名]

常见参数:

  • -F指定列的分割符

常见动作:

  • print 显示内容

  • $0 显示当前行所有内容

  • n 显示当前行的第n列内容,如果存在多个n,它们之间使用逗号(,)隔开

常见内置变量

变量作用
NR指定显示行的行号
NF输出 最后一列的内容
OFS输出格式的列分隔符,缺省是空格

实例代码:

# 打印第一行第1和第3列内容
~$ awk  'NR==1 {print $1,$3}' awk.txt 

# 指定隔离分隔符,查看内容
~$ awk -F ':' '{print $1,$7}' linshi.txt 

# 设置显示分隔符,显示内容
~$ awk 'BEGIN{OFS=":"} {print NR,$0}' awk.txt

4、scp

远程文件传输

传输场景:

场景样式
推送scp 本地文件 远程连接的用户@远程主机:远程主机的目录路径 scp python.tar.gz root@192.168.8.13:/root/
拉取scp 远程连接的用户@远程主机:远程主机的文件路径 本地目录 scp root@192.168.8.13:/root/python.tar.gz ./

二、流量控制

1、if语句

双分支if - 单条件,两结果

if [ 条件 ]
then       
    指令1      
else       
    指令2  
fi

多分支if - n条件,n+1结果

if [ 条件 ]                
then                
    指令1                
elif [ 条件2 ]                
then                
    指令2                
else                
    指令3                
fi

2、case语句

case 变量名 in
   值1)
      指令1
         ;;
   ...
   值n)
       指令n
         ;;
esac

脚本内容

# cat case.sh 

#!/bin/bash
# case语句使用场景
case "$1" in                    
    "start")                    
        echo "服务启动中..."                    
        ;;                    
    "stop")                    
        echo "服务关闭中..."                    
        ;;                            
    "restart")                    
        echo "服务重启中..."                    
        ;;                    
    *)                    
        echo "$0 脚本的使用方式: $0 [ start  or stop  or restart ]"        
        ;;                    
esac

3、循环语句

for循环

for 条件    
do          
    执行语句
done

特点:for语句,循环的数量有列表中元素个数来决定

while循环

当条件成立时,执行循环
while 条件    
do          
    执行语句
done

until循环

知道条件成立时,结束循环
until 条件    
do          
    执行语句
done

4、函数

函数就是将某些命令组合起来实现某一特殊功能的方式,是脚本编写中非常重要的一部分

# 1、定义简单函数
函数名(){            
    函数体                    
} 
# 调用函数
函数名 

# 2、定义传参函数
函数名(){
    函数体 $n
}
# 调用函数
函数名 参数

简单函数定义和调用示例

#!/bin/bash
# 函数使用场景一:执行频繁的命令
dayin(){
  echo "wo de mingzi shi  111"
}
dayin

注意:这种方法,在函数体内使用echo,就相当于一种状态返回值的变种

函数传参和函数体内调用参数示例

#!/bin/bash
# 函数的使用场景二
dayin(){
  echo "wo de mingzi shi $1"
}
dayin 111

# 3、定义脚本传参函数
# 3.1、脚本传参
/bin/bash 脚本名 参数 
# 3.2、函数体调用参数
函数名(){            
    函数体 $1        
}                    
函数名 $1 

# 生产用
# 脚本传参
/bin/bash 脚本名 参数
# 函数体调用参数
本地变量名="$1"
函数名(){
    函数体 $1
}
函数名 "${本地变量名}"
# 注意:类似于shell内置变量中的位置参数

posted on 2020-10-11 09:09  yycnblog  阅读(388)  评论(0)    收藏  举报

导航