01-shell的自学课-基础变量学习

一、echo变量的一个坑

声明【临时变量】,然后打印出来;(拓展:env是linux的全局变量)

[root@gong ~]# xinjizhiwa=shell
[root@gong ~]# echo $xinjizhiwa
shell

[root@gong ~]# echo $xinjizhiwa-haha
shell-haha
[root@gong ~]# echo $xinjizhiwahaha

#不分开写,就什么都不显示了;因为,系统自动识别“xinjizhiwahaha”为一个整体,我们没有声明这个变量,所以打印值为空;

如果说们有这种需求,就要在变量后面直接加字符串,怎么办呀?使用{}框住变量名即可;

[root@gong ~]# echo ${xinjizhiwa}haha
shellhaha

二、linux的特殊的变量

1,系统命令变量

        我们在安装好一个软件在linux之后,命令不论在哪个目录下,都可以使用,本质就是通过变量的方式进行打印的;

        命令本身是一个执行文件,我们使用“命令”实际上就是通过【命令路径变量】进行寻址并使用变量地址中的执行文件的;

        那么系统中命令的变量在哪里?

[root@gong ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2,字符集变量

就是系统使用的什么字符集(万国码、、、、)

[root@gong ~]# echo $LANG
en_US.UTF-8

3,解释器的颜色变量

[root@gong ~]# echo $PS1
[\u@\h \W]\$

4,当前用户的ID

[root@gong ~]# echo $UID
0

三、案例写一个简单的shell脚本

[root@gong ~]# vim 01-shell.sh

#!/bin/bash

#声明变量
hostname=`hostname`
ipaddress=`hostname -I`
mem_total=`free -h | awk 'NR==2{print $2}'`
mem_free=`free -h | awk 'NR==2{print $NF}'`
sys_load=`top -bn1 | awk -F: 'NR==1{print $NF}'`

#执行代码
echo "主机名称是:$hostname"
echo "ip地址:$ipaddress"
echo "内存总量:$mem_total"
echo "内存空闲:$mem_free"
echo "系统负载:$sys_load"

[root@gong ~]# sh 01-shell.sh

四、【$数字】=接收传参

使用脚本外部传进来的参数,作为变量使用;

【$数字】   #传参;命令行的文字传输到脚本当中;$1表示第一个参数,$2表示第二个参数;

· 编辑一个脚本

#!/bin/bash

xinjizhiwa=$1
echo " ${xinjizhiwa} 传参成功了!"

[root@gong ~]# sh 02-shell.sh xinjizhiwa
 xinjizhiwa 传参成功了!
[root@gong ~]# sh 02-shell.sh haha
 haha 传参成功了!
[root@gong ~]# sh 02-shell.sh 111222333
 111222333 传参成功了!

· 两个参数案例

[root@gong ~]# vim 02-shell.sh

#!/bin/bash

xinjizhiwa=$1
xjzw=$2
xuexi=$3
echo " ${xinjizhiwa} 传参成功了!"
echo " ${xjzw} 传参成功了!"
echo " ${xuexi} 传参成功了!"

[root@gong ~]# sh 02-shell.sh haha xixi hehe
 haha 传参成功了!
 xixi 传参成功了!
 hehe 传参成功了!

五、【$0】脚本的路径/名字

【$0】就代表脚本呢的文件名称,怎么使用,你随意;

[root@gong ~]# vim 02-shell.sh

#!/bin/bash

xinjizhiwa=$1
xjzw=$2
xuexi=$3
echo " ${xinjizhiwa} 传参成功了!"
echo " ${xjzw} 传参成功了!"
echo " ${xuexi} 传参成功了!"
echo "脚本的名称是:$0"

[root@gong ~]# sh 02-shell.sh haha xixi hehe
 haha 传参成功了!
 xixi 传参成功了!
 hehe 传参成功了!
脚本的名称是:02-shell.sh

六、【$?】上一条执行结果

打印$?得到的结果是,上一条命令是否执行成功,成功则返回0,不成功,怎返回非0;

[root@gong ~]# cat /etc/hosts >> /dev/null 
[root@gong ~]# echo $?
0
[root@gong ~]# catttttt  /etc/hosts >> /dev/null 
-bash: catttttt: command not found
[root@gong ~]# echo $?
127

七、【$#】控制传参数量

        后面讲,需要配合其他知识;

八、【$@】或者【$*】取出脚本中所有参数

[root@gong ~]# vim 02-shell.sh 

#!/bin/bash

xinjizhiwa=$1
xjzw=$2
echo " ${xinjizhiwa} 传参成功了!"
echo " ${xjzw} 传参成功了!~ "
############################
echo $@
echo $*

[root@gong ~]# bash 02-shell.sh 111 222
 111 传参成功了!
 222 传参成功了!~ 
111 222
111 222

至此,变量就告一段落;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心机の之蛙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值