Shell脚本中的变量

这篇博客详细介绍了Shell脚本中的变量定义、环境级别、转译方法以及数组操作。讲解了如何设置环境变量,包括临时、用户和系统级别。此外,还涵盖了命令别名的设定、利用命令执行结果设定变量以及脚本参数传递。最后,展示了如何定义和使用脚本函数,并给出了一个创建用户脚本的示例。
摘要由CSDN通过智能技术生成
1.变量的定义

定义本身,变量就是内存一片区域的地址,在程序运行过程中值时允许被改变的量,
在shell中变量时不能永久保存在系统中的,必须在文件中声明

2.shell脚本中变量的定义方法

echo $a #显示a的变量值

####环境级别,只在当前shell中生效,关闭shell则变量丢失
export a=1 #export来声明变量这样就可以使当前shell中的所有子shell识别

####用户级别,写在用户的骨文件中,只针对当前用户生效

vim ~/.bash_profile
///
export a=1
///
source ~/.bash_profile  #使文件更改生效

####系统级别

vim /etc/profile     #系统级环境变量自定义配置文件,不推荐修改  
export a=2   
vim /etc/profile.d/westos.sh
///
export b=3         #系统级环境变量自定义子配置文件,对所有用户生效
///
source /etc/profile.d/westos.sh  #使更改生效
3.变量的转译

1).转译

\ #转译单个字符
“ ” #弱引用,批量转译个数字符,不能转译“" “`” “$” “!”
’ ’ #强引用,可以引用所有

2).声明${}
a=1

echo $ab  #当显示$ab时本身想让$a的值显示出来,到那时系统识别$ab是一个变量名称
echo ${a}b  #所以在此要对这个变量进行声明

3).变量的数组

a=(1 2 3 4 5)
a$[a[@]:起始元素id:元素个数]
echo ${a[0]}	#显示数组的第一个元素
echo ${a[1]}	#显示数组的第二个元素
echo ${a[-1]}	#显示数组的最后一个元素
echo ${a[*]}	#显示数组的所有元素
echo ${a[@]}	#显示数组的所有元素
echo ${#a[@]}	#显示数组中元素的个数
echo ${a[@]:0:3}  #从第一个元素开始显示三个
echo ${a[@]:1:3}  #从第二个元素开始显示三个

unset a[n]   #删除数组中的第n+1个元素
unset a | unset ${a[*]}  #删除数组
4.Linux中命令的别名设定

alias xie= ‘vim’ #临时设定

vim ~/.bsahrc
///
alias xie= 'vim'	#只针对当前用户生效
///

vim /etc/bashrc alias xie='vim' #shell的配置,永久生效

删除别名:
先删掉配置文件内容,然后unalias.xie

5.利用命令执行结果设定变量

设定方式:

~/.bash_profile
export PATH=$PATH:/mnt
/etc/bash_profile
export PATH=$PATH:/mnt

1).直接利用命令执行结果

$()|	
TEST=hostname TEST=$(hostname)
[root@westoslinux ~]# TIME=`date`   #利用命令的输出指定变量的值
[root@westoslinux ~]# echo $TIME
Sat Aug 14 15:13:49 CST 2021

2).脚本中的传参
非交互模式:
*)变量值传递

$0  is /mnt/test.sh		#脚本名称
$1  is 			#脚本后的第一串字符串
$2  is 			#脚本后的第二串字符串
$3  is 			#脚本后的第三串字符串
$#  is			#脚本后所跟字符串的个数
$*  is			#脚本后跟的所有字符串,模式为“1 2 3”
$@  is			#脚本后的所有字符串,模式为“1” “2” “3”
$#  is			#脚本后所输入的字符串的个数
$$  当前开启shell的id号

交互模式传参:
用read实现变量传递 实现交互式变量

 read     WESTOS		#对westos进行赋值
 read -s  WESTOS               #-s隐藏输入的内容
 read -p "input:" WESTOS	#输入提示语
6.脚本函数

定义:程序的别名
设定方式:

WORD()
{
action1
action2
}
WORD 在脚本中就代表action1 action2这两个动作

脚本练习:
create_user.sh username
check user
if user exist -----> user is exist
if user not exist ------ create user —> Please input user’s password : westos
set user’s password is westos

vim create_user.sh
///
#!/bin/bash
[ -z "$1" ] && {
  echo "Error: Please input username following script !!"
  exit
}

id $1 &> /dev/null && {
  echo "$1 is exist"
  }||{
  useradd $1
  read -p "Please input password: " -s PASS
  echo ""
  echo $PASS | passwd --stdin $1 &> /dev/null && echo $1 is created !!
 }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值