shell之-变量以及变量的使用方式

shell之-变量以及变量的使用方式

1 shell变量是什么?

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

ip=www.baidu.com # 变量的命名必须以字符或者下划线开头,=号左右不能有空格
ping -c1 $ip #通过$ip来获取变量的值

2 Shell变量赋值

2.1 显式赋值

a=1
echo $a # 1

2.2 从控制台赋值

#!/bin/bash
# 从控制台输入一个字符串并赋值给ip
read -p "please enter a word you like: " ip
# 开始ping该ip
ping  -c1 "$ip" &>/dev/null

# 看上一条命令是否执行成功,假如ping成功,那么就打印up
if [ $? -eq 0 ]; then
	echo "ping $ip is success!~ $ip is up!"
else 
	echo "ping $ip is failed!~ $ip is down!"
fi

2.3 通过$n,通过执行脚本的时候传入参数值

# 这叫位置变量,位置变量不需要事先定义
$1 代表第一个变量
$2 代表第二个变量 
...... ${10}

3 环境变量

在shell中,可以通过export命令的 的方式定义环境变量,环境变量是可以全局共用的,

可以通过env命令来查看所有的环境变量,常见的环境变量有:$HOME$SHELL U S E R USER USERPWD

env # 查看环境变量
set # 查看所有配置
export ip=www.baidu.com
ip1=www.google.com
export ip1 # 将ip1转换成环境变量,在当前shell以及子shell中有效

# 普通变量只在当前shell中有效
echo ${ip1}
echo $ip1
echo ${#ip1}  #显示字符串的长度

3.1 怎么通过不使用环境变量的方式使用其他shell脚本中的变量

# 创建一个shell
vim bash.sh
#!/bin/bash
base=/opt
base1=/usr/local


#创建另外一个变量
vim a1.sh
#!/bin/bash
# 通过source base.sh  或者 . base.sh
. base.sh # .与base.sh 中间必须有制表符
echo $base
echo $base1

4 $? $! $# $* $$ $@ 一般可以用在if [] fi判断中或者while中

$? 代表上个命令的执行结果
$! 代表上一个后台进程的进程id pid #仅支持后台进程
$# 代表参数的个数
$$ 当前进程的pid
$* 所有参数
$@ 所有参数
$1 $2 $3 $4 $5 $6 $7 $8 $9 ${10}  #分别代表传入脚本的参数,第N个参数
$0 代表当前脚本的名字(全路径)

# 查看脚本内容
cat vals.sh
echo '第一个参数是:' $1
echo '第三个参数:'$3
echo '$# = ' $# 
echo '$* = '$*
echo '$@  = '$@
echo '$$' = $$

# 执行脚本,查看执行结果
bash vals.sh 1 2 3 4 5
第一个参数是: 1
第三个参数:3
$# =  5
$* = 1 2 3 4 5
$@  = 1 2 3 4 5
$$ = 67961

5 文件名 basename 目录名dirname

cd /Users/shufang/shell_practice

basename $PWD  # shell_practice,显示末尾的文件夹或者文件名称
dirname $PWD # /Users/shufang/shell_practice 显示全路径名称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值