shell变量
一、自定义变量
1.1 自定义局部变量
在shell脚本文件中
var_name=value
1.2 自定义常量
readonly var_name
1.3 自定义全局变量
在shell脚本文件中
export var_name
二、特殊符号变量
1.1 $n: 用于获取命令的输入参数
$0: 获取执行脚本的文件名称
$1-$9: 获取第1个输入参数-第9个输入参数
${10}: 获取第10个输入参数(超过第9个参数,就需要使用{})
示例:
demo.sh
#!/bin/bash
echo "当前文本脚本文件:$0"
echo "第一个输入参数:$1"
echo "第二个输入参数:$2"
echo "第十个输入参数:${10}"
1.2 $#:用于获取输入参数的个数
示例:
demo.sh
#!/bin/bash
echo "输入参数个数:$#"
1.3 $*和$@: 用于获取命令的所有输入参数
1、若 $*和 $@ 不加双引号,则无区别,均输出所有输入参数对象列表
2、若 $*和 $ @ 加双引号,
"$*" 将所有的输入参数列表拼接成一个字符串输出
"$@"将所有的输入参数列表单个单个字符串输出
示例:
demo.sh
#!/bin/bash
echo '使用$*直接输出:'$*
echo '使用$@直接输出:'$@
echo '循环遍历输出$*所有参数'
for item in "$*"
do
echo $item
done
echo '循环遍历输出$@所有参数'
for item in "$@"
do
echo $item
done
[root@vm-paas scwyfy]# bash demo.sh hell wolrd java
使用$*直接输出:hell wolrd java
使用$@直接输出:hell wolrd java
循环遍历输出$*所有参数
hell wolrd java
循环遍历输出$@所有参数
hell
wolrd
java
1.4 $?:用于获取shell命令执行返回的状态码,一般返回0表示执行成功,非0表示执行失败
示例:
[root@vm-paas scwyfy]# echo java
java
[root@vm-paas scwyfy]# echo $?
0
1.5 $$:用于获取当前shell环境进程的id
示例:
[root@vm-paas scwyfy]# echo $$
3425