Linux中shell脚本的使用:【为什么使用脚本】【脚本调用方式】【脚本中的变量】

当我们要在多台主机上输入多段代码时,常规的一台一台操作会耗费大量的时间和精力。有一种解决办法为批量操作。将所有的指令集合到文件中,通过文件的使用来间接使用文件中的指令,达成需要的效果。这就是脚本的使用。

什么是Shell脚本:

命令、变量和流程控制语句等有机的结合起来。 shell脚本擅长处理纯文本类型的数据,而linux中,几乎所有的配置文件,日志,都是纯文本类型文件。

第一部分:脚本调用:

那么首先我们下来看一下调用脚本的几种方式:

在这里插入图片描述
那么同是脚本调用,看起来效果也都一样,有没有什么区别呢?

我们将脚本内容改为会一直执行的程序,再来观察:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

发现:给脚本可执行权限后,再通过脚本名字直接使用,当脚本中有程序时,会另起一个新的shell去运行脚本中的指令程序。

调用脚本时我们也可以使用sh -x 脚本名 来进行调试,当脚本执行出错时,会告诉我们哪一步出了问题。
在这里插入图片描述

第二部分:变量:

1.变量的定义

变量即在程序运行过程中它的值是允许改变的量
变量是用一串固定的字符来标示不固定的值的一种方法
变量是一种使用方便的占位符,用于引用计算机内存地址,该地
址可以存储 Script 运行时可更改的程序信息
在 shell 中变量是不能永久保存在系统中的,必须在文件中声明

2.变量名称的规
变量名称中通常包含大小写字字母,数字,下划线(不是必须)**

3.在 shell 脚本中变量的种类

在 shell 中变量分为环境级变量,用户级变量,系统级变量
环境级变量只在当前 shell 中生效, shell 关闭变量丢失
用户级变量写在用户的骨文件中,只针对当前用户生效
系统级变量被写在系统的配置文件 /etc/profile 或者 /etc/profile.d/ 中,对于所有用户都生效

/etc/skel/   中有用户环境变量配置文件 ls -a  ##查看

shell 脚本中变量的定义方法

环境级
export A=1   ###直接在shell界面输入

用户级
vim ~/bash_profile  ###在当前用户配置文件中写入
	export A=1
echo $A
su - student   ###切换用户后失效
echo $A

系统级
vim /etc/profile    ###直接写在系统配置文件中
	export A=1

刷新 : source 配置文件


声明变量:export A=1  ,将其在shell中共享
.bashrc           ###shell环境设定
.bash_profile     ###用户环境设定
.bash_logout      ###退出时执行的指令 
/etc/profile      ###全局配置文件

env  ###系统全部的变量
echo $PS1   ###shell的行头变量
PS1=""     ###改变shell行头的变量    【改为空行时可以使用pwd显示路径

在这里插入图片描述

su - 用户  ### -为切换用户时加载环境配置
su 用户    ###  切换用户不加载环境配置
vim   /etc/profile 
	export A=1 
echo $A
su student
echo $A
exit
su - student
echo $A
##################加 - 时切换用户会加载全局配置

在这里插入图片描述
在这里插入图片描述

Linux中元字符:由自己功能的符号: # $ % @ & *

转译单个字符:
"" 弱引用:不能引用: ` \ ! $
''强引用,可以引用所有

${} 变量声明
echo ${A}b ###声明A为变量 ###echo $Ab将Ab看作一个字符串

a=1 
echo $a
echo $ab
echo ${a}b

在这里插入图片描述

定义数组:a=(1 2 3 4)
echo $a
echo ${a[0]}
echo ${a[1]}
echo ${a[*]}

在这里插入图片描述

$1 脚本后的第一串字符串
$2 脚本后的第二串字符串
$3 脚本后的第三串字符串
$# 脚本后所跟字符串的哥数
$* 脚本后跟的所有字符串,模式为“ 1 2 3 ”
&@ 脚本后跟的所有字符串,模式为“ 1”“2”“3”

写一个脚本:

echo \$0 is $0   ###输出文件名
echo \$1 is $1   ###脚本后第一串字符
echo \$2 is $2   ###脚本后第二串字符
echo \$3 is $3   ###脚本后第三串字符
echo \$# is $#   ###脚本后面有几串字符
echo \$* is $*   ###执行一次
echo \$@ is $@   ###多次执行
echo \$\$ is $$  ###当前进程的pid   ###给脚本+x权限,绝对路径运行,ctrl+z挂到后台,ps f 查看pid

在这里插入图片描述
在这里插入图片描述

$*和$@的区别:
在这里插入图片描述
将@改为 *查看结果

在这里插入图片描述

kill -9 $$  关闭当前shell   【相当于kill -9 进程pid】

最后:交互式变量:

read:交互式定义变量

#!/bin/bash
read -p "please input IP:" TARGET
echo "$TARGET"

在这里插入图片描述
在这里插入图片描述


【调用指令】
`` ###通用
$() ###shell中使用

举例: echo time is `date` | echo time is $(date)
写一个perl脚本,调用$()不执行
#!/usr/bin/perl
print `date` 或者 print $(date)

在这里插入图片描述
在这里插入图片描述

$? ###命令退出值
执行一条命令,然后echo $? 得到退出值。可以百度查看退出值含义【0为正确】
退出值可以修改: exit 退出值
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值