shell-1.变量使用方法

2020-03-05  本文已影响0人  青丝如梦

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

  1. $PATH:系统会去哪些目录中寻找可执行程序的环境变量
  2. $HOME:当前登录用户的主文件夹
[root@VM_16_6_centos ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

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

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

[root@VM_16_6_centos ~]# A=aaa
[root@VM_16_6_centos ~]# echo $A
aaa
[root@VM_16_6_centos ~]# A=`date`
[root@VM_16_6_centos ~]# echo $A
Thu Mar 5 15:37:45 CST 2020
[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

查看变量

[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 ~]# 

位置变量和特殊变量

[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
  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
上一篇 下一篇

猜你喜欢

热点阅读