2.变量

作者: 互联网中的一个咸鱼 | 来源:发表于2019-08-05 07:49 被阅读0次

变量

yy=123 yy是一个变量名 123是变量值
echo $yy 输出变量值

变量设定的规则

1.变量名与变量内容用=号进行连接,中间不能有空格
2.变量名可以有英文数字和下划线,但不能以数字开头
3.变量内容有空格可以用双引号进行组合
4.单引号内的都只是普通字符,没有任何其他含义
5.可用转意符 \ 将特殊符号(如 [Enter], , \, 空格符, 等)变成一般字符; 6.在一串命令中,想要获取其他命令的结果,可以使用()命令
7.增加变量的内容,可以使用"变量名称"字符串或者${}字符
8.想要变量在子进程执行,需要erport来使变量变成环境变量
9.通常大写字符为系统默认变量,自定义变量使用小写字符
10.取消变量的方式; unset varname

环境变量

常见环境变量

  • PATH,HOME,MAIL,SHELL,PWD,USERNAME,UID,ID
  • RANDOM 随机数
    echo $RANDOM
PS1:(提示字符的设置)
\d :可显示出“星期 月 日”的日期格式,如:"Mon Feb 2"
\H :完整的主机名称。举例来说,鸟哥的练习机为“study.centos.vbird”
\h :仅取主机名称在第一个小数点之前的名字,如鸟哥主机则为“study”后面省略
\t :显示时间,为 24 小时格式的“HH:MM:SS”
\T :显示时间,为 12 小时格式的“HH:MM:SS”
\A :显示时间,为 24 小时格式的“HH:MM”
@ :显示时间,为 12 小时格式的“am/pm”样式
\u :目前使用者的帐号名称,如“dmtsai”;
\v :BASH 的版本信息,如鸟哥的测试主机版本为 4.2.46(1)-release,仅取“4.2”显示
\w :完整的工作目录名称,由根目录写起的目录名称。但主文件夹会以 ~ 取代;
\W :利用 basename 函数取得工作目录名称,所以仅会列出最后一个目录名。
# :下达的第几个指令。
$ :提示字符,如果是 root 时,提示字符为 # ,否则就是 $

env 列出所有环境变量
set 列出系统所有变量
export 使自定义变量转成环境变量
子进程会继承父进程的环境变量,子进程不会继承父进程的自定义变量

bash 的环境变量文件

longin shell
取得shell时需要完整的登入流程;特点是登入时需要用户帐号和密码
non-login shell
取得shell时不需要再次输入帐号和密码的情况下,所得到的 shell

longin shell 会读取以下两个文件:

·/etc/profile· :这是系统整体设定,最好不要修改
·/.bash_profile或/.bash_login或~/.profile` :属于个人的配置文件

/etc/profile 会主动依序调用以下脚本文件:

/etc/inputrc :定义快捷键

/etc/profile.d/*sh :定义bash操作接口颜色、语系、命令别名等

etc/locale.conf :定义系统的默认语系

bash 在读完 /etc/profile 后,接下来会读取以下3个文件,且只会读去一个,会按照以下顺序优先读取
~/.bash_profile //会调用 ~/.bashrc ,
也会有新的环境变量在下面的文件中被添加
~/.bash_login
~/.profile
最终,~/.bashrc 才是最后被读入到系统环境中的文件
让这些环境变量文件中的变量等设置及时在当前 shell 终端中生效,有下两种方式
source ~/.bashrc
或者
. ~/.bashrc

no-longin shell 当取得 no-longin shell 时,该 shell 仅会读取 ~/.bashrc 文件 而~/.bashrc 最后又会调用 /etc/bashrc
/etc/bashrc 的作用:
• 依据不同的UID定义出 umask 值
• 依据不同的UID定义出提示符(就是PS1变量)
• 呼叫 /etc/profile.d/*.sh 的设定
其他的相关配置文件
• /etc/man.config
这个文件最重要的就是定义了MANPATH 这个变量,它定义了man page 的路径;在以tarball的方式安装软件时有用
• ~/.bash_history
历史命令记录文件;记录的数量与HISTFILESIZE变量有关。在/etc/profile里
• ~/.bash_logout
记录了当我注销bash后,系统再帮我做完什么动作后才离开的。

预定义变量

$!    上一次后台命令对应的进程号
$?   上一次命令是否执行成功    0代表成功   !0 代表失败
$$   当前bash的进程号ID

键盘读取

read

-p    后面可以接上提示字符
-t     后面可以跟秒数
如果有-t   ,将其写在最前面

数组

var=(a b c d)  定义数组  以空格隔开
echo ${var[0]}  输出第一个数组的值
echo ${var[*]}  输出数组所有的值
echo ${var[@]} 输出所有
echo ${#var[@]} 输出数组的长度

declare 关联数组

declare -A  查询所有关联数组
declare -A array  定义一个名为array的关联数组
array[name]=shark   将shark赋值给array数组的'name'值

六、变量内容的删除、取代与替换
• 删除
先让小写的 path 自订变量设置的与 PATH 内容相同
[dmtsai@study ~]path={PATH}
[dmtsai@study ~]echo{path}
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/shark/bin

删除最后一个

echo ${path%:*}

% 从字符串的后面开是进行匹配删除,但匹配到第一个时就结束匹配。
:* 就是需要进行匹配的字符串 , : 是普通字符串 * 是通配符,代表任何数量的任意字符串。
所以下面的红色字体的字符串将会匹配后进行删除
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/shark/bin

删除第一个

接着上例的变量进行操作
echo ${path#*:}

是从前面开始匹配删除,匹配到道理和上面的 % 同样的道理
${path#*:} 就是 从变量值的最前面开始匹配,直到遇到第一个 : 结束
所以下面的红色字体会被匹配后删除
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/shark/bin

  • 取代和替换
image

以上不需要都掌握,需要记住下面这个

var=${str:-expr}

strvar 可以是相同的字符串。比如 inpu_date=${inpu_date:-expr}

expr 可以是任意合法的表达式,比如一个字符串,一个子 shell 的命令 $(date +%F)

示例,假如希望用户输入一个日期,当用户没有输入时,就给一个默认值,这里给的是当天的日期

read  -p  "输入日期>:"   input_date

input_date=${input_date:-$(date +%F)}

echo "当前的日期是:${input_date}"

七、时间运算

// 计算 3 小时之后是几点几分
date +%T -d '3 hours'
// 任意日期的前 N 天,后 N 天的具体日期
date +%F -d "20190910 1 day"
date +%F -d "20190910 -1 day"
// 计算两个日期相差天数, 比如计算生日距离现在还有多少天
d1=$(date +%s -d 20180728)
d2=$(date +%s -d 20180726)
echo $(((d1-d2)/86400))

相关文章

  • 2. 变量

    基本概念 PHP中的变量是用一个美元符号跟变量名组合而成,变量名可以是字母、数字、下划线、中文组合而成,但变量名的...

  • 2.变量

    出自:http://www.xiaoboswift.com/course/54

  • 2.变量

    变量 yy=123 yy是一个变量名 123是变量值echo $yy 输出变量值 变量设定的规则 ...

  • 2.变量

    #include using namespace std; int main() { int a = 0; cou...

  • 2. Python变量

    什么是变量? 是一个存储数据的容器 变量特性: 引用着某个具体数值 并且可以改变这个引用 怎样定义变量? 方式1变...

  • Python语言基础之——变量和运算符

    1.变量 1.定义变量 2.使用变量 3.修改变量 重新给变量赋值 4. 同时给多个变量赋值 2.变量赋值的原理 ...

  • 2. Python变量类型

    变量创建 Python中变量创建比较简单, 如:变量名 = 变量值 根据上面的内容可以得出,Python中变量的类...

  • tensorflow实战-2.变量

  • 2.变量是声明

    val: 引用不可变 var: 值可变

  • 2.变量与常量

    常量(Literal Constant) 字面常量:字面上的值 变量 定义:变量类型 变量名 初始值 变量名命名规...

网友评论

      本文标题:2.变量

      本文链接:https://www.haomeiwen.com/subject/gzdrdctx.html