shell编程1----变量

逻辑运算:

true,false
1         0
与:&&   或:||   非:! 

短路运算:

&&:有0则为0
||:有1则为1

写一个脚本,实现如下功能:

1、如果bash用户存在,则显示其存在,否则添加之

显示添加的用户id号等信息
在这里插入图片描述

2、如果bash用户登录了当前系统,就显示bash用户在线,否在显示其不在线

在这里插入图片描述

变量

bashs属于弱类型,即无需指定类型,默认均为字符型,参与运算会自动进行隐士类型转换。

bash变量的种类:

以变量生效范围为标准:
本地变量: 生效范围为当前的shell进程,对其它shell进程及子shell无效
在这里插入图片描述
环境变量: 生效范围为当前shell及其子shell
declare声明一个环境变量
在这里插入图片描述

局部变量: 当前shell进程中的某代码片段(通常指函数)
位置变量: $1,$2,$3…表示在脚本中调用通过命令行传递的参数。
特殊变量: $? $0

$? 上一条命令的返回值,0表示正确执行
$0 命令本身(我们自己传递的变量从$1开始,$1前面的值即为$0)

在这里插入图片描述

本地变量:

变量复制 name=‘value‘
	value:
		可以是字符串 name=“username“
		可以是变量引用 name = $username
		命令引用:name=`COMMAND`   name=$(COMMAND)
变量引用${name},$name
	" " 弱引用,其中的变量引用会被替换成变量值。
	'' 强引用,其中的变量引用不会被替换成变量值,而保持原字符串。
显示已定义的所有变量
	set
销毁变量
	unset name

环境变量

变量声明、赋值
	export name=VALUE
	declare -x name=value
变量引用:$name, ${name}
显示所有环境变量
	export
	env
	printenv
销毁	unset name

bash有许多内建的环境变量,PATH,SHELL,UID,HISTSIZE,HOME,PWD,OLD,HISTFILE , PS1

变量命令法则:

1、不能使用程序中的保留字:例如:if,for,while
2、只能使用字母数字下划线,不能以数字开头
3、见名知义

只读变量:不能修改只,也不能使用unset手动销毁

readonly name
declare -r name

在这里插入图片描述

位置变量:

$1,$2,$3...
$0:脚本或命令本身
$*:传递给脚本的所有参数
$@:传递给脚本的所有参数
$#:传递给脚本的个数
shift [n] :表示将前面传递的变量踢走,n默认为1

在这里插入图片描述
在这里插入图片描述
【shift 2将前面传递的 gg hh 踢走,所以接下来$1就是hha,统计所有参数时就只剩下hha,统计个数为1个】

显示文件行数
在这里插入图片描述

bash配置文件

按范围划分:

全局配置
	
	/etc/profile,/etc/profile.d/*.sh
	/etc/bashrc
个人配置
	
	~/.bash_profile
	~/.bashrc

按功能划分:

profile类:为交互式登录的shell提供配置
	(1)定义环境变量
	(2)运行命令或脚本
bashrc类:为非交互式登录的shell提供配置
	(1)定义命令别名

shell交互式登录:

(1)通过终端输入帐号和密码登录
(2)使用su - username/su -l username
读取配置文件顺序:
/etc/profile---->/etc/profile.d/*.sh ----> ~/.bash_profile ----> ~/.bashrc ----> /etc/bashrc
越到后面读取的越是最终结果

非交互式登录:

(1)su username
(2)图形界面下打开的终端
(3)执行脚本
读取文件顺序:
~/.bashrc---> /etc/bashrc  ----> /etc/profile.d/*.sh

让用户的PATH环境变量的值多出一个路径
在这里插入图片描述

配置文件生效的方法:

(1)重新启动shell进程
(2)使用source或.命令进程

./script和source script的区别

./script 启动一个子shell运行脚本,运行完成后回到父shell,脚本中的执行结果对父shell没有影响
source script:直接在当前shell中运行脚本,运行结果对当前shell有影响
在这里插入图片描述

sh script 会打开一个子shell运行脚本,且脚本可以没有执行权限

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值