shell中的变量

1.变量的定义

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

2.shell脚本中变量的种类

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

3.shell脚本中变量的定义

a=10		//仅在当前环境(不可继承)

在这里插入图片描述
环境级

export a=99	//当前环境和当前环境下面(可以继承)

在这里插入图片描述

用户级

vim ~/.bash_profile
	export a=17

在这里插入图片描述
系统级

vim /etc/profile		//系统中所有用户都生效
	export a=37

在这里插入图片描述
注:证明su与su - 的区别

su -//切换用户并切换用户环境
su//切换用户,不切换用户环境

在这里插入图片描述

前面我们执行脚本时给脚本可执行权限,然后使用其绝对路径便可执行脚本,能否直接使用脚本名执行?在~/.bash_profile中指定环境变量,便可直接执行:

cd
vim .bash_profile
    export PATH=$PATH:/mnt	//指定脚本执行的路径,/mnt中的脚本可以直接执行;可用echo $PATH查看可以使用
source .bash_profile		//使.bash_profiled中的设置生效,即刷新

在这里插入图片描述

注:若果export PATH=$PATH:/mnt写错了,会导致许多命令不可用,但可以使用命令的绝对路径使用命令
还原方法:修改配置文件,使文件正确,然后刷新source .bash_profile,此时命令依旧不可用,需要从新打开shell

注:echo $PS1–直接修改的设置没有在配置文件中生效,关闭重新打开就有正常了
在这里插入图片描述

4.变量名称的规范

变量名称中通常包含大小写字字母,数字,下划线(不是必须)
变量名称格式:
WESTOS_LINUX
Westos_Linux
westoS_Linux

5.字符的转译及变量的声明

\转译一个字符或字符串
“”弱引用,批量转译 “” 中出现的字符,
‘’强引用,批量转译 ‘’ 中出现的字符
‘’ 与 “” 两者的区别, “” 不能转译 “”,"`","!","$"
${}变量声明

例1:

a=1
echo $ab		//输出变量ab的值(把ab当一个变量)		
echo ${a}b		//输出变量a的值与字符b

在这里插入图片描述
例2:数组

a=(1 2 3 4 5)
echo $a		//1
echo ${a[0]}	//1
echo ${a[1]}	//2
echo ${a[*]}	//1 2 3 4 5

在这里插入图片描述

5.变量值传递

$0脚本名
$1脚本后的第1串字符串
$2脚本后的第2串字符串
$3脚本后的第3串字符串
$#脚本后所跟字符串的个数
$*脚本后跟的所有字符串,模式为“ 1 2 3 ”
&@脚本后跟的所有字符串,模式为“ 1”“2”“3
$$脚本执行的id号

测试:编写脚本

#!/bin/bash
echo \$0 is $0
echo \$1 is $1
echo \$2 is $2
echo \$3 is $3
echo \$# is $#
echo \$* is $*
echo \$@ is $@
echo \$$ is $$
watch -n 1 date		//不结束,打入后台用来查看脚本进程id号

在这里插入图片描述

注:$$
echo $$ 当前shell的id
在这里插入图片描述

6.用read实现变量传递

read -p "input: " 	WESTOS	//实现交互
read -s			WESTOS	//隐藏输入

7.linux系统中命令别名的设定
当前环境:

alias xie='vim'		//仅在当前shell中可用,重新打开失效
	xie file

当前用户:

vim .bashrc		//仅当前用户可用
	alias xie='vim'	
source .bashrc 

所有用户:

vim /etc/bashrc		//系统可用
	alias xie='vim'

清除:

alias //查看当前所在用户可以使用的别名
删除配置文件中的信息 + unalias xie(删除当前环境别名,删除配置文件,但环境中的还在)

8.利用脚本执行结果设定脚本

time=`date`适用于所有shell
time=$(date)有局限性

测试:

vim test.sh
	#!/usr/bin/perl
	print `date`	//perl test.sh 可以运行
	print $(date)	//perl test.sh不可以运行

在这里插入图片描述
在这里插入图片描述
$?:

是命令在执行完成之后产生的退出值
范围是 [0-255]
当 $0=0 时标示命令执行没有错误输出
这个值可以用 exit 命令执行 .
例如 exit 66

9.脚本中的函数

  • 相当于递归,一直调用自己,知道满足退出条件后退出
    之前我们使用read只能实现一次交互,完成之后就退出了;为了实现不退出,多次执行,可以使用函数来解决。

例1:

#!/bin/bash
ACTION()
{
	read -p "please input a word: " WORD
	[ "$WORD" = "exit" -o "$WORD" =  "EXIT" ]&&{
		echo bye
		exit 0
	}||{
		echo $WORD
	}
	ACTION	//调用自己
}
ACTION	//第一次执行

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值