精进之关于Shell变量(1)

/ 精进 / 没有评论 / 851浏览

Shell变量

删除变量

unset  变量


shell位置变量


  1. $1 运行shell程序的第一个参数
  2. $2 运行shell程序的第二个参数
  3. $num 依次类推,但是最多只能到$9
  4. $# 代表shell程序的所有参数的个数
  5. $* $@ 将所有的参数作为一个整体,但是有更细微的区别

$*将所有的参数作为一个整体,$@将所有的参数分别作为个体对待

  1. $$ 代表当前进程的ID号码
  2. $? 代码程序的退出代码(一般0代表程序执行成功,非0代表命令执行失败)

一个脚本

[root@pa2 tmp]# sh 6666.sh lijinghua sunwangli niecongcong duanyuxi
lijinghua   >>>>我是第一个参数
sunwangli   >>>>我是第二个参数
4   >>>>我是参数的总数
lijinghua sunwangli niecongcong duanyuxi   >>>>我是所有参数的内容
lijinghua sunwangli niecongcong duanyuxi   >>>>我是所有参数的内容,但是我把所有参数作为一个个体来看待
23384   >>>>我是当前执行shell进程的ID号码
0   >>>>我是当前程序的退出代码
[root@pa2 tmp]# cat 6666.sh 

#!/bin/bash
echo	"$1   >>>>我是第一个参数"
echo	"$2   >>>>我是第二个参数"
echo	"$#   >>>>我是参数的总数"
echo	"$*   >>>>我是所有参数的内容"
echo	"$@   >>>>我是所有参数的内容,但是我把所有参数作为一个个体来看待"
echo	"$$   >>>>我是当前执行shell进程的ID号码"
echo	"$?   >>>>我是当前程序的退出代码"


变量的返回值

变量的删除和替换

[root@pa2 ~]# usr=$(head -1 /etc/passwd)   #将$()中的变量赋值给usr
[root@pa2 ~]# echo $usr
root❌0:0:root:/root:/bin/bash 
[root@pa2 ~]# echo ${usr#*:}             
x:0:0:root:/root:/bin/bash
[root@pa2 ~]# echo ${usr##*:}
/bin/bash
[root@pa2 ~]# echo ${usr%:*}
root❌0:0:root:/root
[root@pa2 ~]# echo ${usr%%:*}
root
[root@pa2 ~]# echo ${usr/root/admin}
admin❌0:0:root:/root:/bin/bash
[root@pa2 ~]# echo ${usr//root/admin}
admin❌0:0:admin:/admin:/bin/bash

一个脚本

#!/bin/bash
foo() {
    # Whatever. An error occurred and I'm returning -1
    return -1
}
bar() {
    foo
    if [ "$?" = "-1" ]; then
        # -1 is my "error code" and I'm returning it
        exit -1
    fi
}
bar # Calls the "bar" function