shell变量

目录

一、三个命令显示变量的值set env declare

二、自定义环境变量

①临时变量

方法一示例

方法二示例

方法三示例

②如果想连接新的会话之后有效需要写在配置文件中

#删除临时变量

a、仅root用户可以输出

b、所有用户都可以输出(root用户如果局部未设置可以输出)

三、设置登录提示

方法①vim /etc/motd

方法②可以在/etc/profile.d下写一个脚本

四、变量定义及变量输出

eg1示例

eg2示例

五、特殊变量

eg1示例

注: $# 显示为传入参数次数  

eg2示例

eg3 $0 获取脚本的名称及路径

eg4 $@ $* 示例


一、三个命令显示变量的值set env declare

set:输出所有的变量,包括全局变量和局部变量

env:显示全局变量

declare:输出所有的变量、函数、证书和已经导出的变量。

set -o:显示bash Shell 的所有参数配置信息。

二、自定义环境变量

变量名:一般由字母、数字、下划线组成,可以以下划线或者字母开头,例如:NAME、NAME123、NAME_123、_NAME123

①临时变量

方法一:
export 变量名=value

方法二:
变量名=value ; export 变量名

方法三:
declare -x 变量名=value

方法一示例

方法二示例

方法三示例

②如果想连接新的会话之后有效需要写在配置文件中

#删除临时变量

unset 变量名

[root@localhost day1]# WEIGHT=100
[root@localhost day1]# export WEIGHT
[root@localhost day1]# echo $WEIGHT
100
[root@localhost day1]# unset WEIGHT
[root@localhost day1]# echo $WEIGHT

a、仅root用户可以输出

[root@localhost day1]# vim /root/.bashrc

 切换终端且用户为root可以输出

 切换终端且用户为xiaohong无法输出

b、所有用户都可以输出(root用户如果局部未设置可以输出)

[root@localhost day1]# vim /etc/bashrc

因为root设置了局部变量因此输出内容为 /root/.bashrc 中配置内容(局部优先)

三、设置登录提示

方法①vim /etc/motd

方法②可以在/etc/profile.d下写一个脚本

[root@localhost ~]# vim /etc/profile.d/welcome.sh
[root@localhost ~]# cat /etc/profile.d/welcome.sh 
echo "welcome my server!"

四、变量定义及变量输出

eg1示例

当echo 变量
或者
echo '变量'
或者
echo "变量"   此时变量没有命令执行,如:第二行输出

会原样输出

当 echo “变量 $(变量)”
或者
echo “变量 `date`” 此时有命令执行,如:第四行和第六行
会执行输出

eg2示例

如果添加新的变量 HIGH

进行enco

因为 $变量 会执行
因此当不带引号或者带上双引号时会输出执行后结果
如果是单引号'' 
echo '$HIGH'
返回之后原样输出

五、特殊变量

eg1示例

[root@localhost day1]# pwd
/scripts/day1

[root@localhost day1]# vim test3.sh
#!/bin/bash
echo "这是第一个变量 $1"
echo "这是第二个变量 $2"
echo "这是第三个变量 $3"
echo "这是第四个变量 $4"
echo "这是第五个变量 $5"

echo "一共有 $# 个变量"

注: $# 显示为传入参数次数  

eg2示例

[root@localhost day1]# vim test4.sh

echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15}

由输出可以看出 $1X 中, 1X 如果不括起来,结果为 $1的值后再跟上x

如下 $1 为a====>$10 为 a0====>${10} 为 j

eg3 $0 获取脚本的名称及路径

[root@localhost day1]# vim test5.sh

echo "$0"
echo "`basename $0`"  
#返回脚本名称
echo "`dirname $0`"
#返回脚本路径

当echo "$0"时

①如果sh 后面跟了正确路径则会返回路径和脚本名称

②如果sh后面仅跟脚本名则返回脚本名称

eg4 $@ $* 示例

[root@localhost day1]# set a b c
[root@localhost day1]# echo $#
3

$*会作为一个整体输出

$@会一个一个输出

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值