Shell 编程-Shell 变量详解

今天给伙伴们分享一下Shell 编程-Shell 变量,希望看了有所收获。

我是公众号「想吃西红柿」「云原生运维实战派」作者,对云原生运维感兴趣,也保持时刻学习,后续会分享工作中用到的运维技术,在运维的路上得到支持和共同进步!

如果伙伴们看了文档觉得有用,欢迎大家关注我的公众号,获取相关文档。爱运维,爱生活。

1、Shell 变量(实时动态变化)

  • 用一个固定的字符串去表示不固定的内容

2、变量的类型

1、自定义变量
  • 定义变量: 变量名=变量值 变量名必须以字母或下划线开头,区分大小写 ip1=192.168.2.115 见名知意
  • 引用变量: $变量名 或 ${变量名}
  • 查看变量: echo $变量名 set(所有变量:包括自定义变量和环境变量)
  • 取消变量: unset 变量名
  • 作用范围: 仅在当前Shell中有效
2、环境变量
  • 定义环境变量:
  1. 方法一 export back_dir2=/home/backup
  2. 方法二 export back_dir1 将自定义变量转换成环境变量
  • 引用环境变量: $变量名 或 ${变量名}
  • 查看环境变量: echo $变量名 env 例如 env | grep back_dir2
  • 取消环境变量: unset 变量名
  • 变量作用范围: 在当前Shell和子Shell有效
3、位置变量
  • $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}
4、预定义变量
  • $0 脚本名(自己本身)
  • ∗ 所有的参数 " * 所有的参数 " 所有的参数"*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数
  • @ 所有的参数 " @ 所有的参数 " @所有的参数"@" 会将各个参数分开,以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数
  • $# 参数的个数
  • $$ 当前进程的PID
  • $! 上一个后台进程的PID
  • $? 上一个命令的返回值 0表示成功

示例1:

# vim test.sh
echo "第2个位置参数是$2"
echo "第1个位置参数是$1"
echo "第4个位置参数是$4"

echo "所有参数是: $*"
echo "所有参数是: $@"
echo "参数的个数是: $#"
echo "当前进程的PID是: $$"

echo '$1='$1
echo '$2='$2
echo '$3='$3
echo '$*='$*
echo '$@='$@
echo '$#='$#
echo '$$='$$


for i in $*
do
      echo "脚本的参数是 $i "
done

for j in $@
do
        echo "脚本的参数 $j"
done
# 不加引号,$* 和 $@ 获取的值是一样的

for i in "$*"
do
      echo "脚本的参数是 $i "
done

for j in "$@"
do
        echo "脚本的参数 $j"
done
# 加引号$* 获取的值是一行(所有参数合并到一行) $@ 获取的值和参数个数相同(每个参数一个值)  

示例2:

# vim ping.sh
#!/bin/bash							
ping -c2 $1 &>/dev/null		        
if [ $? = 0 ];then					
    echo "host $1 is ok"	    
else											
    echo "host $1 is fail"	    
fi											
[root@edenluo ~]# chmod a+x ping.sh
[root@edenluo ~]# ./ping.sh 192.168.2.25

4、变量的赋值方式

1、显式赋值
  • 变量名=变量值

  • 示例:

ip1=192.168.1.251
school="BeiJing 1000phone"
today1=`date +%F`
today2=

猜你喜欢

转载自blog.csdn.net/mohuanfenghuang/article/details/142968787