shell脚本基础总结

本文总结了Linux Shell脚本的基础知识,包括常用的文本处理工具、字符与符号的使用、流程控制(如if、for、while、until、case)、测试命令、文件测试以及函数定义。还介绍了参数处理和重定向等核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

shell脚本基础总结

shell脚本一直是运维常用的语言,为此总结了一下shell脚本中使用到的文本符号及语法

  1. 工具:sort、grep、cut、uniq、tee、paste、tr、sed、awk等都是有关shell和文本处理有关的工具

  2. shell中的字符:

echo:用于字符串的输出

***** :代表零个或多个字符或数字。

? :只代表一个任意的字符

# :这个符号在linux中表示注释说明的意思,即”#”后面的内容linux忽略掉

[ ] :中括号,中间为字符组合,代表中间字符中的任意一个

wc :统计文档的行数、字符数、词数,常用的选项为:

-l :统计行数

-m :统计字符数

-w :统计词数

>, >>, 2>, 2>> :重定向符号> 以及>> 分别表示取代和追加的意思,然后还有两个符号就是这里的2> 和2>> 分别表示错误重定向和错误追加重定向,当我们运行一个命令报错时,报错信息会输出到当前的屏幕,如果想重定向到一个文本里,则要用2>或者2>>

&& **||**和-o -a

  1. command1 ; command2

  2. command1 && command2

  3. command1 || command2

使用”;”时,不管command1是否执行成功都会执行command2; 使用”&&”时,只有command1执行成功后,command2才会执行,否则command2不执行;使用”||”时,command1执行成功后command2 不执行,否则去执行command2,总之command1和command2总有一条命令会执行。

运算符说明
!非运算,表达式为 true 则返回 false,否则返回 true。
-o或运算,有一个表达式为 true 则返回 true。
-a与运算,两个表达式都为 true 才返回 true。
  1. 测试命令

    (1)数值测试:

    ​ -eq:等于则为真
    ​ -ne:不等于则为真
    ​ -gt:大于则为真
    ​ -ge:大于等于则为真
    ​ -lt:小于则为真
    ​ -le:小于等于则为真

    (2)字符串测试:

    ​ =:等于则为真
    ​ !=:不相等则为真
    ​ -z字符串:字符串长度伪则为真
    ​ -n字符串:字符串长度不伪则为真

    (3)文件测试:

    ​ -e文件名:如果文件存在则为真
      -r文件名:如果文件存在且可读则为真
      -w文件名:如果文件存在且可写则为真
      -x文件名:如果文件存在且可执行则为真
      -s文件名:如果文件存在且至少有一个字符则为真
      -d文件名:如果文件存在且为目录则为真
      -f文件名:如果文件存在且为普通文件则为真
      -c文件名:如果文件存在且为字符型特殊文件为真
      -b文件名:如果文件存在且为块特殊文件则为真

  2. 条件判断

    test 条件表达式

    [条件表达式]

    [[条件表达式]] 支持正则

  3. (())

    使用方法:

    语法:

    ((表达式1,表达式2…))

    特点:

    1、在双括号结构中,类c语言,如:a++,b–等。

    2、在双括号结构中,所有变量可以不加入:“$”符号前缀。

    3、双括号可以进行逻辑运算,四则运算

    4、双括号结构 扩展了for,while,if条件测试运算

    5、支持多个表达式运算,各个表达式之间用“,”分开

  4. 数字运算

    下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20:

    运算符说明举例
    +加法expr $a + $b 结果为 30。
    -减法expr $a - $b 结果为 -10。
    *乘法expr $a \* $b 结果为 200。
    /除法expr $b / $a 结果为 2。
    %取余expr $b % $a 结果为 0。
    =赋值a=$b 将把变量 b 的值赋给 a。
    ==相等。用于比较两个数字,相同则返回 true。[ $a == $b ] 返回 false。
    !=不相等。用于比较两个数字,不相同则返回 true。[ $a != $b ] 返回 true。
  5. shell中参数

    执行脚本时,获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数

    另外,还有几个特殊字符用来处理参数:

    参数处理说明
    $#传递到脚本的参数个数
    $*以一个单字符串显示所有向脚本传递的参数。 如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
    $$脚本运行的当前进程ID号
    $!后台运行的最后一个进程的ID号
    $@ ∗ 相 同 , 但 是 使 用 时 加 引 号 , 并 在 引 号 中 返 回 每 个 参 数 。 如 " *相同,但是使用时加引号,并在引号中返回每个参数。 如" 使"@“用「”」括起来的情况、以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数。
    $-显示Shell使用的当前选项,与set命令功能相同。
    $?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

shell流程控制

if

if 语句语法格式:

if condition;then
    command1 
    command2
    ...
    commandN 
fi

写成一行(适用于终端命令提示符):
if [ $(ps -ef | grep -c "ssh") -gt 1 ]; then echo "true"; 


if condition1;then
    command1
elif condition2  
    command2
else
    commandN
fi

for循环

for循环一般格式为:

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

写成一行:
for var in item1 item2 ... itemN; do command1; command2… done


for i in 1 2 3 4 5
do
    echo "$i"
done

while循环用于不断执行一系列命令,也用于从输入文件中读取数据;命令通常为测试条件。其格式为:

while condition
do
    command
done


#!/bin/bash
int=1
while(( $int<=5 ))
do
    echo $int
    let "int++"
done

until 循环执行一系列命令直至条件为 true 时停止。

until 循环与 while 循环在处理方式上刚好相反。

其语法格式:

until condition
do
    command
done


#!/bin/bash
a=0
until [ ! $a -lt 10 ]
do
   echo $a
   a=`expr $a + 1`
done

case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。case语句格式如下:

case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

break命令允许跳出所有循环(终止执行后面的所有循环)

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。

shell中函数的定义格式如下:

function_name() {
		command
		command
}


hello(){
echo "hello lilei $1"
hostname
}
menu(){
cat <<-EOF
1. mysql
2. web
3. app
4. exit
EOF
}

source或. 读取函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值