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 显示全路径名称

你可能感兴趣的:(Shell)