linux Shell篇

本文详细介绍了Linux Shell脚本的基础知识,包括shell介绍、编写第一个脚本、变量(本地变量、环境变量、位置变量、特殊变量)、循环与if判断(for、while、if),以及shell扩展和Linux定时器crontab的使用。通过实例和关键概念讲解,帮助读者掌握Shell编程基础。

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

前言

记录在学习大数据技术中的学习笔记

目录

一、shell介绍

二、第一个shell脚本

三、shell中的变量

a、了解shell变量

b、本地变量

c、环境变量

d、位置变量

e、特殊变量

f、变量和引号的特殊使用

四、shell循环和if判断

a、for循环

b、while循环

c、if判断

五、shell扩展

 六、linux中的定时器crontab


一、shell介绍

shell是用户与Linux操作系统沟通的桥梁

shell脚本文件后缀通常是.sh

shell脚本的第一行内容是:#!/bin/bash

注意:其他行以#开头的表示注释

二、第一个shell脚本

创建脚本:vi hello.sh

#!/bin/shell
# hello word
echo hello world

执行脚本的两种方式

1、bash hello.sh

2、sh hello.sh

添加执行权限

chmod u+x hello.sh

添加执行权限后可以使用简化的形式执行

./hello.sh

在环境变量中配置 “.”  当前目录,可以直接使用脚本名称进行执行

hello.sh

脚本的单步执行

bash -x hello.sh

三、shell中的变量

a、了解shell变量

变量不需要声明,初始化也不需要指定类型

变量命名:只能使用数字、字母和下划线,且不能以数字开头

变量赋值是通过“=”进行赋值,在变量、等号和值之间不能出现空格!

b、本地变量

格式:VAR_NAME=VALUE

应用场景:在shell脚本中定义一些临时变量时使用,对当前shell进程的子进程及其他shell进程无效

name=1 #定义变量
echo $name#输出变量值
1
echo ${name}hello
1hello

c、环境变量

格式:export VAR_NAME=VALUE

应用场景:用于设置临时环境变量,对子shell进程有效,对其他shell进程无效

export id=001 #创建环境变量
echo $id #输出环境变量值

设置永久的环境变量需要添加到 /etc/profile文件中

d、位置变量

$0、$1、$2、……

格式:location.sh a b

位置变量相当于java中main函数args参数,可以在shell脚本中动态获取外部参数

vi location.sh #创建脚本

#location.sh    #编写脚本
#!/bin/bash
echo $0
echo $1
echo $2

sh location.sh 123 456    #执行脚本
location.sh               #$0 脚本的名字
123                       #$1 参数1的值
456                       #$2 参数2的值

e、特殊变量

$?:上一条命令的返回状态码,状态码在0~255之间 返回 0 表示成功,其他值表示失败

$#:shel脚本所有参数的个数

f、变量和引号的特殊使用

‘’:单引号不解析变量

name=1

echo $name
1
echo '$name'
$name    #原样输出

“”:双引号解析变量

name=1

echo $name
1
echo "$name"
1

``:反引号执行并引用命令的执行结果echo `$name`

name=ls
echo `$name`
hello.sh

$(……):是反引号的另一种写法

name=ls
echo $($name)
hello.sh

注意:echo ' "$name" ' 和 echo " '$name' "

name=ls

echo ' "$name" '
"$name"

echo " '$name' "
'hello.sh'

四、shell循环和if判断

a、for循环

语法一:
for((i=0;i<10;i++))
do
循环体……
done
语法二:
for i in 1 2 3
do
循环体……
done

b、while循环

适用于循环次数未知,或不便于使用for直接生成较大列表时

while 测试条件
do
循环体……
done

测试条件为“真”,则进入循环,测试条件为“假”,则退出循环

测试条件
格式:
test EXPR 或者 [EXPR]中括号和表达式之间的空格不能少

整型测试:-gt(大于)、-lt(小于)、-ge(大于等于)、-le(小于等于)、-eq(等于)、-ne(不等于)

字符串测试:=(等于)、!=(不等于)

例子
#!/bin/bash
while [ 2 -gt 1 ] #[] 中的空格不能少
do
echo yes
sleep 1            #每循环一次,进程休息一秒
done

c、if判断

if判断之单分支 语法:

if 测试条件
then
    选择分支
fi

例子1:
#a.sh
#!/bin/bash
if [ 1 -gt 2 ]
then
    echo yes
fi

sh a.sh
yes

例子2:
#b.sh
#!/bin/bash
if [ $# -lt 1 ]
then
    echo 无参
    exit 100
fi

if [ $1 -eq 1 ]
then
    echo one
fi

b.sh
无参
echo $?
100
if判断之双分支 语法:

if测试条件
then
    选择分支1
else
    选择分支2
fi
if判断之多分支 语法:

if测试条件1
then
    选择分支1
elif测试条件2
then
……
else
    选择分支n
fi

五、shell扩展

后台运行脚本

nohup sh 脚本文件 &

查看脚本是否在运行(也可以看到脚本的进程号)

ps -ef | grep 脚本名

停止脚本

kill 脚本进程号

标准输出(1)、标准错误输出(2)、重定向(> 覆盖 或者 >> 追加)

 

 六、linux中的定时器crontab

crontab作用于周期性被执行的命令

*      *      *      *      *      user-name command

  1. *                         分钟(0-59)
  2. *                         星期中的第几天(0-6)
  3. *                         月份(1-12)
  4. *                         月中的第几天(1-31)
  5. *                         小时(0-23)

 查看crontab服务状态(默认开启的)

systemctl status crond

启动/停止crontab服务

systemctl start/stop crond

添加定时任务

vi /etc/crontab

查看crontab执行日志

tail -f /var/log/cron

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值