更新时间:2022-12-16 16:19:20 来源:极悦 浏览1183次
1.shell中定义局部变量
定义局部变量可以使用local,多在函数中应用
1)shell中定义的变量都是global的,其作用域从被定义的地方开始,到shell结束或被显示删除的地方为止
2)函数定义的变量是可以被定义成local的,其作用域只限于函数内
2.在执行脚本时bash和source的区别
1、source命令用法:
source 文件名
作用:在当前bash环境下读取并执行FileName中的命令。该fifilename文件可以无"执行权限"
注:该命令通常用命令“.”来替代。
source(或点)命令通常用于重新执行刚修改的初始化文档。
source命令(从 C Shell 而来)是bash shell的内置命令。
点命令,就是个点符号,(从Bourne Shell而来)。
source的程序主体是bash,脚本中的$0变量的值是bash,而且由于作用于当前bash环境,脚本中set的变量将直接起效
2、sh,bash的命令用法:
sh/bash 文件名
作用:打开一个子shell来读取并执行FileName中命令。该fifilename文件可以无"执行权限"
注:运行一个shell脚本时会启动另一个命令解释器.
每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
shell脚本也可以启动他自已的子进程.这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务. 在ubuntu中sh只是bash的一个链接。由于是在子shell中执行,脚本设置的变量不会影响当前shell。
3、./的命令用法:
./文件名
作用:打开一个子shell来读取并执行FileName中命令。该fifilename文件需要"执行权限"
注:运行一个shell脚本时会启动另一个命令解释器.
每个shell脚本有效地运行在父shell(parent shell)的一个子进程里.
这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程.
shell脚本也可以启动他自已的子进程.
这些子shell(即子进程)使脚本并行地,有效率地地同时运行脚本内的多个子任务.由于是在子shell中执行,脚本设置的变量不会影响当前shell。
3.哪些方式可以将标准输出和错误输出重定向到文件?
命令 &> 文件名
命令 > 文件名1 2> 文件名2
命令 > 文件名 2>&1
命令 &>> 文件名命令 >> 文件名1 2>> 文件名2
命令 >> 文件名 2>&1
4.正则表达式符号*、+、?、[]、[^]、{n} 分别代表什么含义?
* 表示匹配的前面的字符出现了任意次(包括0次)
表示匹配的前面的字符出现了至少1次(1次或多次)
? 表示匹配前面的字符出现了0次或1次
[] 表示集合,匹配集合中的任意单个字符
[^] 表示对集合取反
{n} 表示精确匹配前面的字符出现了n次
5.日志切割脚本
[root@localhost ~]# vim /usr/local/nginx/logbak.sh #新建脚本名为
logbak.sh
\#!/bin/bash #解释器
date=`date +%Y%m%d` #自定义date变量,值等于当前日期
logpath=/usr/local/nginx/logs #自定义logpath变量,值等于
Nginx日志所在路径
mv $logpath/access.log $logpath/access-$date.log #把当前access日志重命名
mv $logpath/error.log $logpath/error-$date.log #把当前error日志重命名
kill -USR1 $(cat $logpath/nginx.pid) #向nginx主进程发USR1信
号,重新打开生成日志文件,如不发送USR1,Nginx将会继续写入改名之后的日志
接下来把写好的脚本写入计划任务,自动执行。
[root@localhost ~]# crontab -e #打开计划任务表
01 02 * * 6 /usr/local/nginx/logbak.sh #每周六凌晨2:01运行脚本进行
日志切割
以上就是“分享五个shell面试题整理”,你能回答上来吗?如果想要了解更多的相关内容,可以关注极悦Java官网。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习