Linux shell基础之变量声明和处理

本篇博客将讲解shell编程语言中最基础的变量声明和处理。

先来说一下set:声明变量

  • set:查看变量,可以看到有很多是系统提前设置好的变量,比如系统环境变量PATH,ls命令中颜色的变量LS_COLOR等
    在这里插入图片描述
  • unset 变量:比如unset sex,删除sex变量
  • export sex=man:设置了一个环境变量sex,该变量会在接下来建立的子shell中存在,当我们输入bash命令后,我们会进入一个shell中,当我们输入exit,会退出当前shell,回到父shell中。
    在这里插入图片描述
    在这里插入图片描述
    可以发现,子shell中没有a变量,只有声明了环境变量的b。

系统环境变量:我们所执行命令都是由该命令所命名的可执行文件,比如ls命令,其实就是在执行ls文件。那么这些文件都在哪里呢?其实都在系统的某些目录中,我们通过echo $PATH命令查看那些目录/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin,命令文件就存储在这些目录中,这些也叫做系统变量。

PS1:定义系统提示符的变量,就是这个

在这里插入图片描述
我们可以通过echo $PS1来查看当前系统提示符变量的情况,默认为[\u@\h \W]$ 。

符号功能
\d显示日期,格式是“星期 月 日”
\h显示简写主机名,默认是”localhost“
/u显示当前用户
\w显示当前完整路径
\W显示当前目录最后一个目录
\t显示24小时制时间
$提示符,如果是管理员root,提示符为”#“,如果是普通用户则为”$“

比如我们想修改PS1:PS1="[\u@ 星期\d \t \w]$: ",最后显示为
在这里插入图片描述

接下来讲解的是位置参数变量,先来说一下什么是位置参数变量。当我们写了一个shell脚本,运行后要求输入参数,此时我们按顺序输入参数,系统中就根据位置参数来接受我们输入的参数,比如有三个参数a,b,c,当我们以此输入,此时$1表示第一个输入的参数a,$2表示第二个输入的参数b,以此类推。

参数变量含义
$nn为数字,$0表示命令本身,$1- 9 表 示 第 一 到 第 九 个 参 数 , 十 以 上 要 写 出 9表示第一到第九个参数,十以上要写出 9{10}
$*代表所有参数,$*把所有的参数看成一个整体
$@也是代表所有参数,但是$@会把每个参数区别对待,有点像字符串和字符数组的关系
$#会返回命令行所有参数的个数

参数变量其实是预定义变量的一种。

预定义变量含义
$?最后一次执行命令的返回状态,如果这个变量的值为0,说明正确执行;如果不是0,说明上一个命令没有正确执行
$$当前进程的进程号(PID)
$!后台运行的最后一个进程号

上述讲了这么多的变量,接下来就讲解一下参数的赋值。read:接受键盘输入,一般用来接受输入的参数。

  • read -p “提示信息”:在等待read输入时,输出提示信息
  • read -t 秒数:read命令会一直等待用户输入,使用此选项可以指定等待时间
  • read -n 字符数:read命令只接受指定的字符数,就会执行,比如
  • read -s:隐藏输入的数据,这个选项可以用于输入密码等重要信息

declare:声明变量类型。

  • declare - :给变量设定类型属性,比如declare -i a:将a声明成整形变量
  • declare + :取消变量的类型属性,比如declare +i a:取消a的整形属性
  • declare -i:将变量声明为int型
  • declare -x:将变量声明为环境变量
  • declare -p:显示指定变量的被声明的类型

大家可以做一个小实验,输入以下代码:

aa=11
bb=22
cc=$aa+$bb
echo $cc

查看结果发现为:11+22,因为默认Linux将变量类型为字符串,+起到拼接作用。要想得到cc为aa与bb相加的结果,有很多种方法:

  • 1.declare -i cc= a a + aa+ aa+bb,这种方法是将cc声明为int型
  • 2.使用 ( ( ) ) 括 起 来 : f f = (())括起来:ff= (())ff=(( a a + aa+ aa+bb )),这种方法本人非常推荐$(()),里面运算均为数学算术运算。

变量测试:很多时候,我们在写脚本是,当要接受某个程序传过来的参数,我们要判断参数是否为空,是否设置,是否已经赋值,此时就需要判断变量的式子。当然,我们也可以写程序判断,但是调用系统的方法往往高效且简单。

在这里插入图片描述

source命令,当我们修改了某些配置文件,比如.banshrc文件,需要重新启动才能生效,此时source命令可以不用重启,直接生效。

  • source 配置文件:修改配置文件后不需要重启,直接就生效了
  • . 配置文件:跟上面同理,注意点与配置文件之间有空格

最后再说几个环境配置的文件。

文件名作用
~./bash_logout注销时后生效的文件,默认时为空
~/bash_history保存历史命令文件,只有一千条。一般来说不用清除,除非给某个用户设计密码后,root设置密码的命令会保存在这里,必要的话可以清除
/etc/issue针对本地登录后,在输入用户名和密码前的一串提示
/etc/issue.net针对远程终端欢迎信息,该文件默认不会执行,需要在/etc/ssh/sshd_config文件中加上一行Banner /etc/issue.net,然后再重启一下ssh服务,命令为:systemctl restart sshd.service
/etc/motd远程登录后的欢迎信息
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值