shell学习

本文详细介绍了Shell脚本的基础知识,包括数组、运算符、判断条件、流程控制结构如if、for和while,以及case语句。同时,讲解了常用的Shell命令如Sed、cut、Awk和Sort的使用方法,是学习Shell编程的实用教程。

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

在写之前分享之前碰到的一个小问题
在shell中有两种多行注解
1 <<!
!
2 << EOF
EOF
这点需要注意

数组

Shell数组表达
用括号来表示,元素用“空格”符号分割开,
语法:arr=(value1,value2,value3)(这种方式带值)

获取@ 可以获取数组的所有元素
获取长度就是使用@和
的时候就是在前面{}内加#

运算符

两种方式
$((运算式)) $[运算式]

Expr使用时要注意有空格
使用*的时候例如
$ expr ‘expr 2 + 3’ * 4

判断条件

Condition(注意condition前后都要有空格)
(1)两个整数之间比较
= 字符串比较
-lt 小于(less than) -le 小于等于(less equal)
-eq 等于(equal) -gt 大于(greater than)
-ge 大于等于(greater equal) -ne 不等于(Not equal)
(2)按照文件权限进行判断
-r 有读的权限(read) -w 有写的权限(write)
-x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence) -d 文件存在并是一个目录(directory)
在[]中多条件判断
&&表示前一条命令执行成功时才会执行吓一跳,
|| 表示前一条执行失败了才会执行的下一条命令

流程控制

if条件语句的学习

在 Linux Shell 编程中,if、for、while、case 等条件流程控制
语句用的非常多,把这些学好,对提升脚本的功力有非常大的帮助。
下面将逐个来讲解具体的用法:
 If 条件判断语句
if (表达式) #if ( Variable in Array )
语句 1
else
语句 2
fi
案例一,测试数字大小
#!/bin/sh
NUM=100
if (( $NUM > 4 )) ;then
echo “this num is $NUM greater 4 !”
fi
案例二,测试目录是否存在,不存在则新建(注意,中括号之间必须
要空格)
#!/bin/sh
#judge dir exist
if [ ! -d /data/20140515 ];then
mkdir -p /data/20140515
else
echo “This DIR is exist,Please exit ……”
fi
逻辑运算符解析:
-f 判断文件是否存在 eg: if [ -f filename ]
-d 判断目录是否存在 eg: if [ -d dir ]
-eq 等于 应用于:整型比较
-ne 不等于 应用于:整型比较
-lt 小于 应用于:整型比较
-gt 大于 应用于:整型比较
-le 小于或等于 应用于:整型比较
-ge 大于或等于 应用于:整型比较
-a 双方都成立(and) 逻辑表达式 –a 逻辑表达式
-o 单方成立(or) 逻辑表达式 –o 逻辑表达式
-z 空字符串
案例三,多个条件测试判断
#!/bin/sh
scores=80
if [[ $scores -gt 85 ]]; then
echo “very good!”;
elif [[ $scores -gt 75 ]]; then
echo “good!”;
elif [[ $scores -gt 60 ]]; then
echo “pass!”;
else
echo “no pass!”
fi

循环语句 for

For 变量 in 字符串
do
语句 1
done
案例一,打印 seq 数字循环
#!/bin/sh
for i in seq 15
do
echo “NUM is $i”
done
案例二,求和 1-100 的值
#!/bin/bash
#auto sum 1 100
j=0
for ((i=1;i<=100;i++))
do
j=expr $i + $j
done
echo $j

循环条件while

while 条件语句
do
语句 1
done
案例一,while 条件判断数字
#!/bin/sh
i=1;
while [[ $i -lt 10 ]];do
echo $i;
((i++));
done;
案例二,扩展讲解 linux read 命令
read -p ‘Please Input number:’
案例三,while 逐行读取某个文件
#!/bin/sh
while read line
do
echo $line;
done < /etc/hosts

Case 选择语句

case $arg in
pattern1)
语句 1
;;
pattern2)
语句 2
;;
*)
语句 3
;;
esac
案例一,创建选择参数脚本
#!/bin/sh
case $1 in
monitor_log)
monitor_log
;;
archive_log)
archive_log
;;

  • )
    echo “Usage:{$0 monitor_log | archive_log |help }”
    ;;
    esac

Shell 编程

Sed 命令:

sed ‘s/192/10/g’ test.txt 把文件里面的 192 字符替换为 10
在这里插入图片描述
在文件开头或者结尾添加字符
在这里插入图片描述
Sed是一种流编辑器,它一次处理一行内容。文件内容并没有改变。
相关参数:
-e 直接在指令列模式上进行sed的动作编辑
-i 直接编辑文件

命令功能描述
a 直接在指令列模式上进行sed的动作编辑
d 删除
S 查找并替换

cut 命令:

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
1.用法
Cut[选项参数] filename
说明:默认分隔符是制表符

2.参数说明
-f 列号,提取第几列
-d 分隔符,按照指定分割符分割列
-c 指定具体的字符

Awk命令

Awk一个强大的文本分析工具,将文件逐行读入,以空格为默认分割符将每行切片,切开的部分再进行分析处理
awk [选项参数] ‘pattern1{action1} pattern2{action2}…’ filename
pattern:表示AWK在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令

-F 指定输入文件折分隔符
-v 赋值一个用户定义变量

Sort命令

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出
-n 依照数值的大小排序
-r 以相反的顺序来排序
-t 设置排序时所用的分隔字符
-k 指定需要排序的列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值