首页 > 系统相关 >系统集成08-使用Shell脚本

系统集成08-使用Shell脚本

时间:2023-05-06 16:48:02浏览次数:45  
标签:脚本 Shell 变量 08 系统集成 PATH 输入 重定向

系统集成08-使用Shell脚本

1 Shell基础介绍

  1. Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口
  2. Shell将用户输入的命令并且把它们送到内核去执行,然后返回执行结果
  3. Shell是可编程的,它允许用户编写由Shell命令组成的程序

查看系统默认安装的shell:

cat /etc/shells

1.1 shell脚本

在Unix/Linux里,一个程序/命令只做好一件事,复杂的问题可以通过多个命令的组合来解决, 形式最简单的Shell脚本就是一系列命令构成的可执行文件,并可以被其他脚本复用

shell脚本的执行

对于脚本文件,我们有两种执行方式:

  • sh script_name.sh
  • ./script_name.sh

如果某个Shell脚本可执行,则可以通过在命令行中输入其名称调用, 被成功调用的前提是,脚本所在路径包含在$PATH变量中

echo $PATH	#查看&PATH变量
PATH=$PATH:/New/path	#修改PATH变量
echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/New/path 	#查找具体某个命令/脚本的路径

后台执行:

当前命令行界面存在则会一直执行:

./my_script.sh &

当前命令行界面不存在也会一直执行:

nohup ./my_script.sh &

2 Shell编程基础

Linux中的文本流

文本流存在于Linux的每一个进程中. Linux的每个进程启动时,会打开三个文本流的端口:标准输入、标准输出、标准错误, 这三个端口对应着一个程序的输入、输出和异常的抛出

输出重定向

某些情况下,我们需要保存程序的输出,此时就可以通过重定向,将程序的输出保存到文件中

  1. 将标准输出定向到文件中(覆盖):

    ls>dir_log
    
  2. 将标准输出追加到文件中:

    ls>>dir_log
    

输入重定向

与输出重定向类似,输入重定向是把程序的标准输入进行重新定向

  1. 输入重定向:

    command<inpuptfile
    

    将右边的文件作为标准输入,然后传入左边的命令

  2. 内联输入重定向:

    command<<marker
    

    输出重定向需要文件,而内联输入重定向可以使用即时输入的文本作为标准输入,传入左边的命令, “marker”作为标志,表示标准输入的开始和结束,自身不包含在标准输入里

管道

有时需要将一个命令的输出连到另一个命令的输入,如果用重定向实现会较复杂,管道(|)就像现实中的水管一样,可以连接两个命令的输入和输出,甚至是串联多个命令

管道实际上是进程间通信(IPC)的一种方式

command1 | command2 | command3

Shell中的字符

和其他编程语言一样,Shell也有一些保留字(特殊字符),在编写脚本时需要注意

字符 说明
# 注释
' 字符串引用
\ 转义
/ 路径分隔
! 反逻辑

变量

  1. 在LinuxShell中,变量主要有两大类:

    • 环境变量
    • 用户定义变量
  2. 每种类型的变量依据作用域不同,又分为全局变量和局部变量

    • 全局变量作用在整个Shell会话及其子Shell
    • 局部变量作用在定义它们的进程及其子进程内
  3. 查看变量

    • 使用printenv查看全局变量
    • 使用set查看某个特定进程中的所有变量,包括局部变量、全局变量以及用户定义变量
  4. 修改变量

    • 在.bash_profile或.bashrc中添加export语句,永久修改变量
  5. 使用变量:

    • 变量命名规则:
      • 变量名由数字、字母、下划线组成
      • 必须以字母或者下划线开头
      • 不能使用Shell里的关键字

扩展变量

在以下示例中,如果不使用花括号,Bash会将$FIRST_$LAST解释为变量$FIRST_后跟变量$LAST,而不是由_字符分隔的变量$FIRST和$LAST

变量的赋值与输出

name=Euler
time=‘2020202’
echo “My nameis $name,today is
$time”
read name
echo “Hello, $name, welcome!”

条件语句

if command
	then
	commands
fi

多分支判断语句

case variable in
	pattern1 | pattern2) commands1;;
	pattern3) commands2;;
	*) default commands;;
esac

循环语句

for:

for var in list
	do
		commands
	done

while:

sum=0; i=1
while((i<=100))
do
	let"sum+=i"
	let"i+=2"
done
	echo "sum=$sum"

标签:脚本,Shell,变量,08,系统集成,PATH,输入,重定向
From: https://www.cnblogs.com/konjac-wjh/p/17377858.html

相关文章

  • 系统集成07-系统管理
    系统集成07-系统管理1任务管理什么是任务管理?在系统运维过程中,可能需要在某个预设的时间执行特定任务比如定时发送邮件、备份并清空日志文件等任务任务的内容可以看作是一系列命令或者一个脚本,我们则需要在特定时间去执行它任务管理分为计划执行和定期执行1.1计划执行......
  • 系统集成03-文本编辑器
    系统集成03-文本编辑器文本处理是操作系统对文件管理的基础操作,文本编辑器是计算机软件中的一种,主要用来编写和查看文本文件。不同的文件编辑器有不同的辅助功能。1Linux常用文本编辑器介绍文本编辑器是操作系统基础的功能软件之一。根据使用环境的不同,Linux的文本编辑器有很......
  • ICT实战系统集成-LAB9-Samba文件共享服务器管理
    ICT实战系统集成-LAB9-Samba文件共享服务器管理实验步骤1安装samba服务端安装samba、samba-common、samba-clientyuminstallsambasamba-commonsamba-client启动samba:ststemctlstartsmb.service查看samba状态2添加系统组share,添加系统账号xiaoming、hanmeimei......
  • ICT实战系统集成-LAB6-openEuler管理文件系统及存储
    LAB6-openEuler管理文件系统及存储1实验要求1.1添加两块scsi硬盘,大小分别为10G1.2对新添加的硬盘1(如:/dev/sdb)进行MBR分区、格式化、挂载1、使用fdisk对/dev/sdb进行分区:/dev/sdb1为主分区1大小2G、/dev/sb2为扩展分区大小8G,在/dev/sb2的基础上建立扩展分区/dev/sdb5,大小......
  • ICT实战系统集成-LAB5-OpenEuler软件管理
    系统集成-LAB5-OpenEuler软件管理1实验要求任务一:使用rpm包安装zziplib工具1、完成安装2、查询zziplib工具是否安装成功3、查询zziplib工具的文件列表和完整目录4、查询zziplib工具的详细信息5、对zziplib工具进行卸载任务二:使用yum/dnf安装java-1.8.01、完成yum/dnf源......
  • ICT实战系统集成-LAB2-openEuler 命令行基础操作入门
    ICT实战系统集成-实验02-openEuler命令行基础操作入门1思考题1.1创建一个/iamthebest目录;1.2在/iamthebest目录下创建/cat和/dog两个目录;1.3将/etc/passwd文件复制到/iamthebest目录;并查看被复制文件的操作权限;1.4尝试执行cp-i/etc/passwd.你会发现什么?为什么......
  • xshell登录服务器提示符显示-bash-4.2#解决方法
    xshell登录服务器提示符显示-bash-4.2#解决方法突然发现root登录的xshell的终端提示符显示的是-bash-4.2#而不是root@主机名+路径的显示方式。搞了半天也不知道为什么出现这种情况。今天终于搞定这个问题,原因是root在/root下面的几个配置文件丢失,丢失文件如下:1、.bash_pro......
  • WEB|[红明谷CTF 2021]write_shell
    源码:<?phperror_reporting(0);highlight_file(__FILE__);functioncheck($input){#过滤字符if(preg_match("/'||_|php|;|~|\\^|\\+|eval|{|}/i",$input)){//if(preg_match("/'||_|=|php/",$input)){die(......
  • shell jq处理json字符串
    1.1工具介绍自己用shell处理json字符串的时候,开发输入格式的不通会导致解析字符串有问题,所以这里用到了jq工具jq是一款命令行下处理JSON数据的工具。其可以接受标准输入,命令管道或者文件中的JSON数据,经过一系列的过滤器(filters)和表达式的转后形成我们需要的数据结构并将......
  • wordpress插件:WPFront Scroll Top返回顶部(WPFront Scroll Top 2.0.7.08086 / wordpr
     一,安装插件/设置插件:插件->安装插件->用top关键字进行搜索,然后选择WPFrontScrollTop点立即安装按钮安装完成后,点启用按钮选中前两项选中前两项后,点保存更改按钮二,测试效果说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architec......