shell变量
点击这里:查看shell变量的数学运算
点击这里:查看shell变量的替换,删除,切片
一、命令替换
`` 和 $(),先执行符号里面得命令,将命令结果作为变量值。
# ` `
today1=`date +%F`
echo $today1
2020-03-25
# $()
today2=$(date +%F)
echo $today2
2020-03-25
二、位置变量
$1 : 用户输入得第一个参数
$2:用户输入得第二个参数
三、预定义变量 (预定义变量需要执行时指定参数)
预定义变量指定得参数一般为定义好得文件,比如执行脚本生成用户,会将用户写成一个文件,直接引用这个文件即可。
$? 上一个命令得返回值0表示成功
$0 脚本名
$$ 当前脚本得进程
$* 所有参数
$# 所有参数得个数
练习例句:如果用户没有加入参数
1.$# 是用户输入参数得个数,如果 $# == 0 则代表没有输入
if [ $# -eq 0 ];then
echo "Try:input some value for `basename $0`"
fi
2.如果$1用户输入的,并且不是一个文件,则提示该内容不是文件
-f 判断是否为文件 -d 判断是否为目录
if [ ! -f $1 ];then
echo "`basename $1` is not file"
fi
3.生成一个IP地址的文件,在脚本中进行轮询ping这个文件内的主机地址
for ip in `cat $1`;
do
ping -c1 $ip &> /dev/null
if [ $? -eq 0 ];then
echo "$ip is up ~!"
else
echo "$ip is down ~!"
fi
done
三、自定义变量
定义变量:
基本的变量 ,变量名=变量值 ,变量名必须以字母或者下划线开头,区分大小写。
引用变量
$符号,引用变量
$变量名 / ${变量名}
查看变量
echo $变量名
取消变量
unset 变量名
四、环境变量
环境变量一般都是系统在使用得变量,并不会过多应用在脚本中进行执行
定义环境变量得方法:
方法1:export 变量名=变量值
方法2:export 脚本文件 / export 变量名
引用变量
$符号,引用变量
$变量名 / ${变量名}
查看变量
echo $变量名
env | grep 脚本名 (env显示所有得环境变量,env |grep 显示想要查看得某个环境变量)
取消环境变量
unset 变量名
练习
1.可以定义个父级脚本,在父级脚本中定义很多得公共变量
2.然后在子脚本中,通过 source 和 . 得方式引用父级别脚本得公共变量,到子脚本中引用执行
父脚本:public.sh
子脚本:sub1.sh
子脚本:sub2.sh
/shell/public.sh
#!/bin/bash
name1=zs
name2=ls
name3=ww
passwd=123.com
path=/tmp/passwd.txt
/shell/sub1.sh
#!/bin/bash
source /shell/sub1.sh
useradd $name1 $name2 $name3
/shell/sub2.sh
#!/bin/bash
source /shell/sub1.sh
echo "$name1:$passwd" >> $path
echo "$name2:$passwd" >> $path
echo "$name3:$passwd" >> $path
五、赋值变量
1.从键盘赋值
2.直接赋值
‘’:强引用
“”:弱引用
read 命令,从键盘赋值
-p:提示信息
-t:倒计时显示时间
-n:指定字符
-u:文件描述符
read -p 从键盘读入一个值
例1: read -p "Please input a ip " ip
1.1.1.1
1.1.1.1
例2:read -n 5
12345
例:让用户一次性输入用户,年龄,性别
#!/bin/bash
read -p "您的姓名,性别,年龄 [zhangsan,man,XX]:" name sex age
echo "您输入得姓名是: $name,性别:$sex,年龄:$age"