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,以此类推。
参数变量 | 含义 |
---|---|
$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基础之变量声明和处理相关推荐
- 沈超+shell课件_[Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量.ppt...
[Linux教程 李明 沈超 兄弟连]10.4.4 Shell基础-Bash变量-预定义变量 第十讲 Shell基础 主讲人:沈超(/lampsc) 交流论坛: 课程大纲 10.1 Shell概述 1 ...
- linux shell 基础 使用日志与心得
linux shell 基础 使用日志与心得 1.#!/bin/bash 第一行就出现 #!/bin/bash是指此脚本使用/bin/bash来解释执行. 其中,#!是一个特殊的表示符,其后,跟着解释 ...
- Shell基础-环境变量配置文件
Shell基础-环境变量配置文件 Shell基础-环境变量配置文件 source 配置文件 或者 . 配置文件: 把环境变量写入配置文件后,需要用户重新登陆才能生效,而是用source命令,则能直接生 ...
- [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了Go的编译运行 ...
- 变量的三重属性_TypeScript基础入门 - 变量声明(三)
转载地址TypeScript基础入门 - 变量声明(三)www.gowhich.com 项目实践仓库 https://github.com/durban89/typescript_demo.gitt ...
- Linux Shell中的变量-环境变量
参考:<Linux命令 / 编辑器与Shell编程> ################################################ note that :与其他编程语言 ...
- centos shell基础 alias 变量单引号 双引号 history 错误重定向 21 jobs 环境变量 .bash_history source配置文件 nohup ...
centos shell基础知识 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 ...
- linux 运行class文杰,Linux Shell基础知识,你想的到的都在这里
小编提示:此篇文章阅读时间为15分钟左右,可先收藏后阅读. 01/Linux 的江湖地位 Linux 作为一个全球用户超过14亿的操作系统,它的强大与神奇就不必多说了,混在IT界 Linux是可以装B ...
- 【Linux】Shell三类变量的作用域——linux shell “永久环境变量”、“临时环境变量”和普通变量之完全解读...
2015-05-08 00:15 3896人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: 软件开发进阶(419) 作者同类文章X Unix/Linux杂项(118) 作者同类文章X 版权声 ...
最新文章
- 金蝶云如何html5登录,第三方系统单点登录到金蝶云指南V2
- 红黑树二叉查找树二叉排序树的理解
- 【MYSQL】常用命令备忘录
- 函数04 - 零基础入门学习C语言35
- 【STL基础】list
- 位图索引,数据库索引浅浅的学习
- 《常用控制电路》学习笔记——数控锁相环调速电路
- JVM :Btrace监控工具
- java核心基础 --- 基本数据类型
- 微软Power BI 每月功能更新系列——3月Power BI 新功能学习
- 在Axapta中实现split函数
- 算法与数据结构篇(暂未解答)
- 分享一款Web压力测试工具Pylot
- EPLAN软件卡顿的解决办法
- Vue 短信验证码组件
- sap 查询数据 未分离版本
- Spring如何用“声明式事务”保护亿万数据安全?【万字解决并发冲突】
- 管道,Linux命令,Windows命令,cmd命令,tmux,vim,shell,bash,sh文件,bat文件
- java计算机毕业设计夕阳红养老院系统源码+lw文档+系统+数据库
- idea中service启动类是灰色,而且启动类经常自动消失解决方法