shell基础-bash变量

1、什么是变量

  变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需 要保存一些信息时,如一个文件名或是一个数字,就把它存放在一个变量中。每个变量有一个名字所以很容易引用它。使用变量可以保存有用信息,使系统获知用户相关设置,变量也可以用于保存暂时信息。

2、变量设置规则

变量名称可以由字母、数字和下划线组成但是不能以数字开头。
如果变量名是"2name”则是错误的。
在Bash中,变量的默认类型都是字符串型,如果要进行数值运算,则必修指定变量类型为数值型。
变量用等号连接值,等号左右两侧不能有空格。
变量的值如果有空格,需要使用单引号或双引号包括。
在变量的值中,可以使用""转义符。
如果需要增加变量的值,那么可以进行变量值的叠加。不过变量需要用双引号包含“ 变 量 名 ” 或 用 变量名”或用 {变量名}包含。
如果是把命令的结果作为变量值赋予变量,则需要使用反引号或$()包含命令。
环境变量名建议大写,便于区分。

[root@localhost tmp]# name="hello dd"
[root@localhost tmp]# echo $name 
hello dd
[root@localhost tmp]# name=$(date)
[root@localhost tmp]# echo $name 
Sat May 16 05:51:12 EDT 2020

3、变量分类

用户自定义变量
环境变量:这种变量中主要保存的是和系统操作环境相关的数据。
位置参数变量:这种变量主要是用来向脚本当
中传递参数或数据的,变量名不能自定义,变量作用是固定的。
预定义变量:是Bash中已经定义好的变量,变量名不能自定义,变量作用也是固定的。

1、用户自定义变量
变量定义

[root@localhost tmp]# name="hello dd"

变量叠加

[root@localhost tmp]# a=123
[root@localhost tmp]# b=456
[root@localhost tmp]# ab="$a"123
[root@localhost tmp]# echo $ab
123123
[root@localhost tmp]# ab=${a}111
[root@localhost tmp]# echo $ab
123111

变量调用

[root@localhost tmp]# echo $name 

变量查看

[root@localhost tmp]# set

变量删除

[root@localhost tmp]# unset ab

2、环境变量

环境变量是什么
  用户自定义变量只在当前的Shell中生效,而环境变量会在当前Shell和这个Shell的所有子Shell当中生效。如果把环境变量写入相应的配置文件,那么这个环境变量就会在所有的Shell中生效

设置环境变量

#申明变量
export变量名=变量值
#查询变量
env
#删除变量
unset变量名
[root@localhost tmp]# export ab=123
[root@localhost tmp]# env
[root@localhost tmp]# unset ab

将本地变量变为环境变量

[root@localhost tmp]# age=10
[root@localhost tmp]# export age

系统常见环境变量
PATH:系统查找命令的路径

[root@localhost tmp]# echo $PATH 
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

#PATH变量叠加

PATH= "$PATH":/root/sh

PS1:定义系统提示符的变量

d:显示日期,格式为“星期月日”
\h: 显示简写主机名。如默认主机名“localhost”
\t:显示24小时制时间,格式为“HH:MM:SS"
\T: 显示12小时制时间,格式为“HH:MM:SS”
\A:显示24小时制时间,格式为“HH:MM”
\u: 显示当前用户名
\w:显示当前所在目录的完整名称
\W: 显示当前所在目录的最后一个目录
\#: 执行的第几个命令
\$: 提示符。如果是root用户会显示提示符为“#”,如果是普通用户 会显示提示符为“S”

3、位置参数变量

在这里插入图片描述

[root@localhost /]# mkdir sh
[root@localhost /]# cd sh/
[root@localhost sh]# ls
[root@localhost sh]# vim canshu1.sh
[root@localhost sh]# cat canshu1.sh 
#!/bin/bash

echo $0
echo $1
echo $2
echo $3
[root@localhost sh]# chmod 755 canshu1.sh 
[root@localhost sh]# ./canshu1.sh 
./canshu1.sh
[root@localhost sh]# 
[root@localhost sh]# ./canshu1.sh 1 2 3
./canshu1.sh
1
2
3
[root@localhost sh]# 

例子1

[root@localhost sh]# vim canshu2.sh
[root@localhost sh]# chmod 755 canshu2.sh 
[root@localhost sh]# ./canshu2.sh 1 2
sum is:3
[root@localhost sh]# cat canshu2.sh 
#!/bin/bash
# num1=$1
# num2=$2
sum=$(( $1+$2 ))
# 打印sum的值
echo "sum is:$sum"

例子2

[root@localhost sh]# vim canshu3.sh
[root@localhost sh]# cat canshu3.sh 
#!/bin/bash

echo $#
echo $*
echo $@
[root@localhost sh]# chmod 755 canshu
[root@localhost sh]# chmod 755 canshu3.sh 
[root@localhost sh]# ./canshu3.sh 1 2 3 4
4
1 2 3 4
1 2 3 4
[root@localhost sh]# 

例子3:$*与$@的区别

[root@localhost sh]# vim canshu4.sh
[root@localhost sh]# cat canshu4.sh 
#!/bin/bash

for i in "$*"
	do
		echo $i
	done

for j in "$@"
	do
		echo $j
	done
[root@localhost sh]# chmod 755 canshu4.sh 
[root@localhost sh]# ./canshu4.sh 1 2 3 4
1 2 3 4
1
2
3
4
[root@localhost sh]# 

4、预定义变量
在这里插入图片描述
在这里插入图片描述

[root@localhost sh]# vim canshu5.sh
[root@localhost sh]# ./canshu5.sh 
29232
29233
[root@localhost sh]# /root/hello.sh
^C
[root@localhost sh]# cat canshu5.sh 
#!/bin/bash

echo "$$"

find /root/ -name hello.sh &
echo "$!"
[root@localhost sh]# 

接受键盘输入
在这里插入图片描述
在这里插入图片描述

[root@localhost sh]# vim canshu6.sh
[root@localhost sh]# ./canshu6.sh 
please input your name: dry
name is dry 
your age: age is 19 
your gender[M/F]: m
sex is m
[root@localhost sh]# cat canshu6.sh 
#!/bin/bash

read -t 30 -p "please input your name: " name

echo "name is $name "

read -s -t 30 -p "your age: " age

echo "age is $age "
echo -e "\n"
read -n 1 -t 30 -p "your gender[M/F]: " gender
echo -e "\n"
echo "sex is $gender"
[root@localhost sh]# 
[root@localhost sh]# 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值