本篇博客将讲解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,以此类推。

参数变量 含义
$n n为数字,$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=aa+aa+aa+bb,这种方法是将cc声明为int型
  • 2.使用(())括起来:ff=(())括起来:ff=(())括起来:ff=(( aa+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 远程登录后的欢迎信息

Linux shell基础之变量声明和处理相关推荐

  1. 沈超+shell课件_[Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量.ppt...

    [Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量 第十讲 Shell基础 主讲人:沈超(/lampsc) 交流论坛: 课程大纲 10.1 Shell概述 1 ...

  2. linux shell 基础 使用日志与心得

    linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现 #!/bin/bash是指此脚本使用/bin/bash来解释执行. 其中,#!是一个特殊的表示符,其后,跟着解释 ...

  3. Shell基础-环境变量配置文件

    Shell基础-环境变量配置文件 Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生 ...

  4. [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题

    作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Go的编译运行 ...

  5. 变量的三重属性_TypeScript基础入门 - 变量声明(三)

    转载地址TypeScript基础入门 - 变量声明(三)​www.gowhich.com 项目实践仓库 https://github.com/durban89/typescript_demo.gitt ...

  6. Linux Shell中的变量-环境变量

    参考:<Linux命令 / 编辑器与Shell编程> ################################################ note that :与其他编程语言 ...

  7. centos shell基础 alias 变量单引号 双引号 history 错误重定向 21 jobs 环境变量 .bash_history source配置文件 nohup ...

    centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件 ...

  8. linux 运行class文杰,Linux Shell基础知识,你想的到的都在这里

    小编提示:此篇文章阅读时间为15分钟左右,可先收藏后阅读. 01/Linux 的江湖地位 Linux 作为一个全球用户超过14亿的操作系统,它的强大与神奇就不必多说了,混在IT界 Linux是可以装B ...

  9. 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和普通变量之完全解读...

    2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X 版权声 ...

最新文章

  1. 金蝶云如何html5登录,第三方系统单点登录到金蝶云指南V2
  2. 红黑树二叉查找树二叉排序树的理解
  3. 【MYSQL】常用命令备忘录
  4. 函数04 - 零基础入门学习C语言35
  5. 【STL基础】list
  6. 位图索引,数据库索引浅浅的学习
  7. 《常用控制电路》学习笔记——数控锁相环调速电路
  8. JVM :Btrace监控工具
  9. java核心基础 --- 基本数据类型
  10. 微软Power BI 每月功能更新系列——3月Power BI 新功能学习
  11. 在Axapta中实现split函数
  12. 算法与数据结构篇(暂未解答)
  13. 分享一款Web压力测试工具Pylot
  14. EPLAN软件卡顿的解决办法
  15. Vue 短信验证码组件
  16. sap 查询数据 未分离版本
  17. Spring如何用“声明式事务”保护亿万数据安全?【万字解决并发冲突】
  18. 管道,Linux命令,Windows命令,cmd命令,tmux,vim,shell,bash,sh文件,bat文件
  19. java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库
  20. idea中service启动类是灰色,而且启动类经常自动消失解决方法

热门文章

  1. SE (Squeeze Excitation)模块
  2. python 3.7安装festtext、提示要更新_现代开发者必备:5个更流畅、更受欢迎的Python web框架...
  3. java 事务 回滚
  4. VBA实现驼峰法变量名转换成下横杠式变量名
  5. mysql 原子操作
  6. 大连有没有培训Oracle,大连诺达ORACLE甲骨文 OCP课程培训
  7. Windows Server网络操作系统安装
  8. Unity3D仿电影字幕
  9. OpenCV中Mat的type说明
  10. oracle风扇设置,HP DL380 G6风扇满速原因