本文基于Linux上RedHat 8版本进行配置演示
一.从用户输入获取参数
1.通过$符号配合*、#、数字等来获取
2.通过read (-p)来获取
二.Shell中的变量
1.定义变量和查看变量
2.变量的分类和取消
一.从用户输入获取参数
1.通过$符号配合*、#、数字等来获取
(1)$0表示当前脚本文件名称
[root@sulibao ~]# vim aaa.sh
#!/bin/bash
echo "这个脚本文件名称为$0"
[root@sulibao ~]# bash aaa.sh
这个脚本文件名称为aaa.sh
(2)${1.....},表示第几个参数,$1表示第一个参数,用户输入参数时参数间以空格相隔
在运行脚本文件时指定第几个参数
[root@sulibao ~]# vim aaa.sh
#!/bin/bash
echo "这个脚本文件名称为$0"
echo "今年上$1年级"
echo "我的邮箱地址是$2"
[root@sulibao ~]# bash aaa.sh 二 666.com
这个脚本文件名称为aaa.sh
今年上二年级
我的邮箱地址是666.com
(3)$#表示统计当前参数总数
[root@sulibao ~]# vim aaa.sh
#!/bin/bash
echo "这个脚本文件名称为$0"
echo "今年上$1年级"
echo "我的邮箱地址是$2"
echo "参数有$#个"
[root@sulibao ~]# bash aaa.sh 二 666.com
这个脚本文件名称为aaa.sh
今年上二年级
我的邮箱地址是666.com
参数有2个
(4)$*表示以整体,“参数1 参数2 参数2”这样的形式返回参数的值
(5)$@表示以个体,“参数1”“参数2”这样的形式返回参数的值
2.通过read (-p)来获取
(1)read 变量,再配合$变量将其输出
[root@sulibao ~]# vim aaa.sh
#!/bin/bash
read name
echo $name
[root@sulibao ~]# bash aaa.sh //用户输入内容后输入输出这个内容
su
su
(2)read配合参数-p可以设置提示输入信息
[root@sulibao ~]# vim aaa.sh
#!/bin/bash
read -p "请输入你的名字:" name
echo "你的名字是: $name"
[root@sulibao ~]# bash aaa.sh
请输入你的名字:su
你的名字是: su
(3)可以指定多个变量,变量间以空格相隔
[root@sulibao ~]# vim aaa.sh
#!/bin/bash
read -p "请输入你的名字和年龄:" name age
echo "你的名字是: $name,你今年$age岁"
[root@sulibao ~]# bash aaa.sh
请输入你的名字和年龄:su 20
你的名字是: su,你今年20岁
二.Shell中的变量
1.定义变量和查看变量
(1)命令行定义
- 变量名='值'
- 变量名="`命令`"
- 变量名="$(命令)"
(2)文件中定义
~/.bashrc和~/.bash_profile
/etc/bashrc,/etc/profile,/etc/profile.d/*.sh
(3)查看变量
注意:
$表示将后面的字符识别为一个变量
\会将特殊字符转义使特殊字符失去原有含义
反单引号将内容识别为一个命令
单引号让里面的特殊字符失效
双引号让里面的特殊字符失去原有含义(除了$,反引号,\)
- echo $变量名
- echo ${变量名}
- printf "$变量名\n"
- printf "${变量名}\n"
- set和declare命令可以查看所有的变量和函数
- env命令可以显示是所有的全局变量
2.变量的分类和取消
(1)局部变量,也叫普通变量,只在某个特定范围内生效的变量
- 命令行中的就在当前进程中生效
- 在脚本文件中就在当前脚本文件中生效
(2)全局变量,也叫环境变量,可以在shell和shell派生的子进程中使用
- 通过export 变量名或者export 变量名=值进行临时设置
- declare -x 变量名=值或declare +x 变量名来取消全局变量
(3)可以通过unset 变量名来取消变量名
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)