Shell 脚本应用(一)

1)编写一个 Shell 脚本

基本格式:

[root@localhost ~]# vim shell.sh # 前面的 shell 可以随意. 后缀必须为 .sh

#!/bin/bash # 脚本声明

This is a Simple Shell Script # 注释

cd /mnt # 脚本要执行的命令

echo “当前目录位于:”

pwd

2)执行脚本

  • ./ 方式必须加可执行权限。

[root@localhost ~]# chmod +x 1.sh

[root@localhost ~]# ./1.sh

  • sh 方式不需要加执行权限。

[root@localhost ~]# sh 1.sh

二、重定向与管道操作

=============================================================================

1.重定向操作


1)重定向输入

  • <:从指定的文件读取数据,而不是从键盘输入。

[root@localhost ~]# vim passwd.txt

ABC123,

[root@localhost ~]# useradd zhangsan

[root@localhost ~]# passwd --stdin zhangsan < passwd.txt

更改用户 zhangsan 的密码 。

passwd:所有的身份验证令牌已经成功更新。

2)重定向输出

  • >:将输出结果保存到指定的文件(覆盖原文件)。

[root@localhost ~]# uname -p > a.txt

[root@localhost ~]# cat a.txt

x86_64

  • >>:将输出结果追加到指定的文件。

[root@localhost ~]# uname -r >> a.txt

[root@localhost ~]# cat a.txt

x86_64

3.10.0-1062.el7.x86_64 #这是追加进来的

3)错误重定向输出

  • 2>:将错误信息保存到指定的文件(覆盖原文件)。

[root@localhost ~]# tar jcf /nonedir/etc.tgz /etc/ 2> error.log

[root@localhost ~]# cat error.log

tar: 从成员名中删除开头的“/”

tar (child): /nonedir/etc.tgz:无法 open: 没有那个文件或目录

tar (child): Error is not recoverable: exiting now

  • 2>>:将错误信息追加到指定的文件中。

[root@localhost ~]# cdd 2>> error.log

[root@localhost ~]# cat error.log

tar: 从成员名中删除开头的“/”

tar (child): /nonedir/etc.tgz:无法 open: 没有那个文件或目录

tar (child): Error is not recoverable: exiting now

bash: cdd: 未找到命令…

相似命令是: ‘cd’

4)混合输出

  • &>:表示直接把正确的输出和错误的输出都直接保存到后面的文件中,后面文件的原始数据丢失。

[root@localhost ~]# pwd &> a.sh

[root@localhost ~]# cat a.sh

/root

  • &>>:表示直接把正确的输出和错误的输出都直接追加到后面的文件中,原始文件数据保留。

[root@localhost ~]# pwdd &>> a.sh

[root@localhost ~]# cat a.sh

/root

bash: pwdd: 未找到命令…

相似命令是: ‘pwd’

2.管道符操作


  • 管道符:将管道符号 | 左侧命令的操作结果,作为右侧命令的执行对象。(同一行命令中可以使用多个)

[root@localhost ~]# grep “/bin/bash$” /etc/passwd

root❌0:0:root:/root:/bin/bash

admin❌1000:1000:admin:/home/admin:/bin/bash

zhangsan❌1002:1002::/home/zhangsan:/bin/bash

[root@localhost ~]# grep “/bin/bash$” /etc/passwd | wc -l

3

三、使用 Shell 变量

================================================================================

Shell 变量是用来存放系统和用户需要使用的特定参数,这些特定参数会根据用户的设定或环境的变化而变化,Shell 变量的使用能够提供更强的适应性与功能。

1.自定义变量


  • 由系统用户自己去定义,只在用户自己的 Shell 环境中有效,又称为本地变量。

  • 基本格式:变量名=变量值(其中"="是赋值符号,变量名需要以字母或者下划线开头,不能包含特殊字符)

[root@localhost ~]# xm=zhangsan #定义变量xm,并赋值为zhangsan

[root@localhost ~]# nl=18 #定义变量nl,并赋值为18

[root@localhost ~]# echo $xm #查看变量xm

zhangsan

[root@localhost ~]# echo $aaa #查看变量aaa,因为没有定义aaa,所以结果为空

[root@localhost ~]# echo KaTeX parse error: Expected 'EOF', got '#' at position 12: xm nl #̲每一个不同变量,都需要再前面加…"符号

zhangsan nl

[root@localhost ~]# echo $xm $nl #查看变量xm与变量nl

zhangsan 18

2.变量赋值的特殊操作


1)双引号的使用场合

  • a:当赋值内容中包含空格时必须使用双引号。

[root@localhost ~]# PYTHON=Python 2.7.14 #错误赋值

bash: 2.7.14: 未找到命令…

[root@localhost ~]# PYTHON=“Python 2.7.14” #正确赋值

[root@localhost ~]# echo $PYTHON

Python 2.7.14

  • b:当赋值内容中用 $ 引用了其它变量时,必须要使用双引号。

[root@localhost ~]# aaa=“ni hao” #赋值 aaa 值

[root@localhost ~]# echo $aaa

ni hao

[root@localhost ~]# bbb=“$aaa ma” #将 aaa 值赋予给 bbb

[root@localhost ~]# echo $bbb

ni hao ma

2)单引号的使用场合

  • 当赋值内容中包含 $双引号\ 等含有特殊的字符时,需要使用单引号扩起来。

[root@localhost ~]# aaa=‘ni hao $b’ #单引号不会引用其他变量

[root@localhost ~]# echo $aaa

ni hao $b

3)反撇号的使用

  • 用于命令的替换或者是命令的赋值;把某个命令的执行结果赋值给变量。

[root@localhost ~]# shijian=date #把 date 这个命令的执行结果赋值给 shijian

[root@localhost ~]# echo $shijian #查询

2020年 09月 04日 星期五 17:47:48 CST #返回的时间

4)read 命令

  • 用来提示用户从键盘读入数据,赋值给变量。从而实现简单的交互过程。

[root@localhost ~]# read aaa #普通赋值

ni hao wo shi zhangsan

[root@localhost ~]# echo $aaa

ni hao wo shi zhangsan

[root@localhost ~]# read -p “你是谁” bbb #设置提示信息,以便告知用户输入说明内容 (使交互操作更加友好,提高易用性)

你是谁wo shi zhangsan

[root@localhost ~]# echo $bbb

wo shi zhangsan

5)变量的使用范围

  • 局部变量:只在当前 Shell 环境中有效。

  • 全局变量:在所有 Shell 环境中有效。

[root@localhost ~]# boss=aaa #定义局部变量

[root@localhost ~]# export boss #把局部变量转化为全局变量

[root@localhost ~]# echo $boss

aaa

[root@localhost ~]# bash #进入子Shell

[root@localhost ~]# echo $boss #再次进行查看,可以正常显示

aaa

[root@localhost ~]# export aaa=zhangsan #直接将变量设置全局变量

[root@localhost ~]# echo $aaa

zhangsan

6)变量的运算

[root@localhost ~]# X=100

[root@localhost ~]# echo $X

100

[root@localhost ~]# Y=20

[root@localhost ~]# echo $Y

20

[root@localhost ~]# expr $X - $Y #减法运算: -

80

[root@localhost ~]# expr $X * $Y #乘法运算: *

2000

[root@localhost ~]# expr $X / $Y #除法运算: /

5

[root@localhost ~]# expr $X % $Y #求模(取余)运算: %

0

四、特殊的 Shell 变量

=================================================================================

1.环境变量


  • 由系统提前创建,用来设置用户的工作环境。

配置文件: /etc/profile ~/.bash_profile

[root@localhost ~]# env #查看当前环境变量

常见的环境变量:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

写在最后

为了这次面试,也收集了很多的面试题!

以下是部分面试题截图

Java程序员秋招三面蚂蚁金服,我总结了所有面试题,也不过如此
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
I30-1713286641122)]

[外链图片转存中…(img-w3wpEq8O-1713286641122)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

写在最后

为了这次面试,也收集了很多的面试题!

以下是部分面试题截图

[外链图片转存中…(img-Avb0W9Gy-1713286641122)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 26
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell脚本是一种在Unix或Linux系统下编写的脚本语言,用于自动化和批处理任务。以下是几个Shell脚本应用实例: 1. Hello World脚本:这是一个简单的Shell脚本,用于输出"Hello World!"的信息。 ``` #!/bin/bash echo "Hello World!" ``` 这个脚本通过echo命令输出了"Hello World!"的文本。 2. 杀死所有脚本:这个脚本用于通过进程名筛选并杀死所有影响系统负载的进程。 ``` #!/bin/bash ps aux | grep 指定进程名 | grep -v grep | awk '{print $2}' | xargs kill -9 ``` 这个脚本通过ps、grep和kill命令结合使用,找到指定进程名的进程并强制终止。 3. 对信号的处理:这个脚本用于拦截用户通过键盘或kill命令发送过来的信号,实现对信号的处理。 ``` #!/bin/bash trap 'echo "暂停10s"; sleep 10' 2 while : do echo "gogogo" done ``` 这个脚本使用trap命令拦截用户按下Ctrl C键发送的信号,并执行暂停十秒的操作。在这个脚本中,使用了无限循环来不断输出"gogogo"的文本。 这些是Shell脚本的一些应用实例,它们可以用于各种自动化和批处理任务,方便地完成一系列操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [100个实用的 Linux Shell 脚本经典案例](https://blog.csdn.net/qq_27706119/article/details/125812348)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [推荐超详细的5个Shell脚本实例](https://blog.csdn.net/Listen2You/article/details/100592404)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值