定义变量:
变量名命名规则与其他语言相似,但注意!变量名与=之间不能有空格
variableName="name"
myURL="http://www.example.com"
myNum="100"
使用变量:
your_name="mozhiyan"
echo $your_name
echo ${your_name} #加花括弧用来识别变量的边界
变量可被二次定义,替换第一次的内容
但是如果将该变量定义成只读的话,就不能被二次修改了。
readonly your_name
删除变量:
#!/bin/bash
read your_name
unset your_name
echo "i am ${your_name} !"
运行以上脚本将不会输出name。
变量的类型:局部变量–仅在当前shell实例中有效
环境变量–shell可访问可定义
shell变量–有shell程序设置的特殊变量,shell变量中一部分是环境变量一部分是局部变量
特殊变量:
#!/bin/bash
echo "File Name: $0"#$0表示当前脚本的文件名
echo "First Parameter : $1"#$n 传递给脚本或函数的参数
echo "First Parameter : $2"
echo "Quoted Values: $@"#传递给脚本或函数的所有参数
echo "Quoted Values: $*"#传递给脚本或函数的所有参数
echo "Total Number of Parameters : $#"#传递给脚本或函数的参数个数
$$
当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID即PID的值。
$?
可以获取上一个命令的退出状态。
所谓退出状态,就是上一个命令执行后的返回结果。
一般情况下,成功返回0,失败返回1.
也可用于获得函数返回值。
#!/bin/bash
funWithReturn(){
name="yaorong"
return $name
}
funWithReturn
# Capture value returnd by last command
ret=$?#获取上面函数的返回值
echo "The sum of two numbers is $ret !"
$* 和 $@ 的区别
#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
上面脚本输出结果是一样的。
但逐个输出的话带引号的结果不一样。
#!/bin/bash
echo "print each param from \$*"
for var in $*
do
echo "$var"
done
echo "print each param from \$@"
for var in $@
do
echo "$var"
done
echo "print each param from \"\$*\""
for var in "$*"
do
echo "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
do
echo "$var"
done