Shell脚本进阶:掌握until循环和sort命令,效率翻倍!

170 阅读3分钟

until 循环

#!/bin/bash
i = 0 #根据需要修改
until [ $i -gt 10 ]
do
    echo $i
    i=$[$i+1]
done

1733373309059.png 简述:这段脚本是一个 until 循环结构

1.功能

这段代码是一个 util 循环结构,用于在满足特定条件之前重复执 行循环体中的操作。在这里,它会不断地输出变量 ⅰ 的值,并对它进行 自增,直到 i 的值不满足循环条件为止。

2.循环条件分析 循环条件部分为[!$i-It 10],这里存在一些问题哦。在 bash 脚本中,用于条件测试的[](等同于 test 命令)有其特定的语法规则。

case 语句

#!/bin/bash
read
-p"请您输入一个数值:"num
case
case $num in
        1)echo您输入的数字是1
        ;;
        2)echo您输入的数字是2
        ;;
        *)echo您输入的是其他数字
        ;;
esac

{1082DA57-F246-44D8-AA0C-9E1CDD13D173}.png 这段 bash 脚本代码的主要从用户那里获取输入的一个数值 ,然后根据输入的值进行不 01:44 里。如果输入的值是 1,则输出"您输入的数字是 1"。如果输入的值是 2,则输出"您输入的数字是 2"。如果输入的值不是 1 或 2,则输出"您输入的是其他数字"。

sort 命令

语法: sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件][-k field1[,field2]] 参数说明:

常用参数:

-t 分隔符 :指定排序时使用的分隔符;

-k : 指定需要排序的列;

-n : 按照数值大小进行排序;

-r : 以相反的顺序排序;

-b : 忽略排序字段或关键字中开头的空格;

-c : 检查待排序内容是否已排序,如果未排序,则输出最开始乱序的列,否则,没有输出;

-o FILE : 将排序结果输出到指定文件,而不是标准输出;

-t 和 -k 参数

以 “:” 为分隔,选取第三列进行排序sort -t ":" -k 3 passwd-sort 也可以使用 “>” 将 sort 排序结果输出到指定文件

案例

文件中行分隔符为冒号":",要求先按第三列数字大小排序,再按照第一列数字大小排序,结果以降序输出

$ echo -e "1:Python:15\n2:Python:5\n3:Ruby:25\n4:Python:15" | sort -t':' -k3 -k1 -nr
3:Ruby:25
4:Python:15
1:Python:15
2:Python:5

将文件 c.txt 中的内容按照第一列内容进行去重。

ADD:USER="123";
MOD:USER="123";
ADD:USER="321";
LST:USER="123";
ADD:USER="321";
LST:USER="456";
MOD:USER="789";

执行命令:cat c.txt | sort -t':' -k1,1 -u

cat c.txt |sort -t':' -k1,1 -u
ADD:USER="123";
LST:USER="123";
MOD:USER="123";
sort -n -t : -k 3 /etc/passwd
sort -n -t : -k 3 /etc/passwd | head -n 3

声明!

学习视频来自B站up主 泷羽sec主页 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!有兴趣的小伙伴可以点击下面链接进入b站主页 https://space.bilibili.com/350329294