美文网首页
shell-1.变量使用方法

shell-1.变量使用方法

作者: 青丝如梦 | 来源:发表于2020-03-05 17:28 被阅读0次

shell有两类变量,临时变量和永久变量。

  • 临时变量:是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。
  • 永久变量:也称为环境变量,其值不会随着shell脚本的执行结束而消失。
  1. $PATH:系统会去哪些目录中寻找可执行程序的环境变量
  2. $HOME:当前登录用户的主文件夹
[root@VM_16_6_centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

用户自定义变量:由字母或下划线打头。由字母、数字、下划线组成,并且大小写字母意义不同。变量名长度没有限制。
使用变量时,在变量名前加“$”

变量赋值(“=”符号两边不能有空格)

    1. 直接赋值:
[root@VM_16_6_centos ~]# A=aaa
[root@VM_16_6_centos ~]# echo $A
aaa
    1. 将一个命令的执行结果赋值给一个变量:
[root@VM_16_6_centos ~]# A=`date`
[root@VM_16_6_centos ~]# echo $A
Thu Mar 5 15:37:45 CST 2020
    1. 将一个命令赋值给一个变量:
[root@VM_16_6_centos ~]# B=$(ls -l)
[root@VM_16_6_centos ~]# echo $B
total 1980 -rw-r--r-- 1 root root 19 Mar 4 18:52 example.sh -rw-r--r-- 1 root root 2023006 Nov 20 01:06 redis-stable.tar.gz

给变量赋值多个单词(""或''):

[root@VM_16_6_centos ~]# NAME="zhang san"
[root@VM_16_6_centos ~]# echo $NAME
zhang san
[root@VM_16_6_centos ~]# 
[root@VM_16_6_centos ~]# NAME='li si'
[root@VM_16_6_centos ~]# echo $NAME
li si
  • 单引号和双引号的区别:
    -- 单引号之间的内容是把字符串原封不动的指定给了变量。
    -- 双引号不仅是取消了空格的作用,特殊符号的含义也会保留。
  • 例:
[root@VM_16_6_centos ~]# NAME='li si'
[root@VM_16_6_centos ~]# NAME="zhang san $NAME"
[root@VM_16_6_centos ~]# echo $NAME
zhang san li si

查看变量

  • 列出所有变量:
    set
  • 使用set过滤变量:
    set | grep A
  • 删除变量:
[root@VM_16_6_centos ~]# echo $NAME
zhang san $NAME
[root@VM_16_6_centos ~]# unset NAME
[root@VM_16_6_centos ~]# echo $NAME

[root@VM_16_6_centos ~]# 

位置变量和特殊变量

  • 位置变量(或位置参数):
    shell解释执行用户的命令时,将命令行的第一个字作为命令名,而其他字作为参数(位置变量)
    位置变量使用$N来获取。$0 是运行程序的文件名,$1~$N代表运行程序的N个参数值。
[root@VM_16_6_centos ~]# cat example.sh 
echo "hello world"
echo $0
echo $1
echo $2
echo $3
[root@VM_16_6_centos ~]# bash example.sh param1 param2 param3
hello world
example.sh
param1
param2
param3
  • 特殊变量:
    有些变量是一开始执行Script脚本时就会设定,且不能被修改,但我们不叫它只读的系统变量,而是称它为特殊变量。这些变量当程序一开始执行时就会存在,以下是一些特殊变量:
  1. $*
    当前程序的所有参数
  2. $#
    当前程序的参数个数
  3. $$
    当前程序的PID
  4. $!
    执行上一个后台程序的PID(注:上一个后台指令必须要以&结尾否则无法获取到PID)
  5. $?
    执行上一个指令的返回值

编写测试脚本:

[root@VM_16_6_centos ~]# cat z.sh 
#!/bin/bash
echo "$* 表示这个程序的所有参数 "
echo "$# 表示这个程序的参数个数 "

touch /tmp/a.txt
echo "$$ 表示程序的进程ID "

touch /tmp/b.txt &
echo "$! 执行上一个后台指令的PID "

echo "$$ 表示程序的进程ID "

执行测试脚本:

[root@VM_16_6_centos ~]# sh z.sh param1 param2
param1 param2 表示这个程序的所有参数 
2 表示这个程序的参数个数 
13562 表示程序的进程ID 
13564 执行上一个后台指令的PID 
13562 表示程序的进程ID

相关文章

  • shell-1.变量使用方法

    shell有两类变量,临时变量和永久变量。 临时变量:是shell程序内部定义的,其使用范围仅限于定义它的程序,对...

  • Viewmodel构造函数添加变量

    viewModel构造函数中添加变量,使用方法:

  • SQL之变量

    参考:SQL Server中变量的声明和使用方法sql语句变量定义和样例 SQL中变量包括局部变量和全局变量 局部...

  • TensorFlow 非常基础的知识笔记

    1、TensorFlow(tf)变量的类型及使用方法 (1) tf.constant() 先定义变量,后直...

  • 07_模板层

    #模板层 一、模版语法之变量 1、变量的直接使用 使用方法:{{ 变量名 }} index.html: 2、函数及...

  • kettle 变量

    使用变量 使用方法:${} 在大括号内加变量名即可(“获得变量”对象是使用变量很好的方法) 使用位置:有下面这个符...

  • css变量的用法

    css3提供了变量var()可以很方便的进行样式的切换以及复用,使用方法var(变量名),声明变量:--变量名:变...

  • sass

    参考-sass入门 1、增加了变量、循环、分支,编译器转回css2、分局部变量跟全局变量 使用方法 特殊变量 嵌套

  • 2018-10-24

    学习要点 ]1. 变量的含义 ]2. 变量的使用方法 3. 常见的数据类型 4. ]变量的命名规则...

  • 变量及数据类型

    变量及数据类型学习要点 变量的含义 变量的使用方法 常见的数据类型 变量的命名规则 赋值运算符和“+” 占位符 接...

网友评论

      本文标题:shell-1.变量使用方法

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