shell变量

shell变量

shell预定义变量

#!/bin/bash
echo "#当前shell脚本的文件名:$0"
echo "#shell脚本的第一个位置参数:$1"
echo "#shell脚本的第二个位置参数:$2"
echo "#shell脚本的第三个位置参数:$3"
echo "#所有传递的位置参数是:$*"
echo "#所有传递的位置参数是:$@"
echo "#总共传递的参数个数是:$#"
echo "#当前shell运行的PID是:$$"
echo "#上一个命令执行的返回结果:$?"		# 结果为0,表示正常,否则异常

$* 和 $@ 的区别:

[root@nginx tmp]# cat tt.sh 
#!/bin/bash
test() {
	echo "未加引号,二者相同"
	echo $*
	echo $@

	echo "加上引号后对比"
	echo "------$*------"
		for N in "$*"
		do
			echo $N
		done

	echo "------$@------"
		for N in "$@"
		do
			echo $N
		done
}
test 11 22 33

结果输出:

[root@nginx tmp]# ./tt.sh 
未加引号,二者相同
11 22 33
11 22 33
加上引号后对比
------$*------
11 22 33
------$@------
11
22
33

总结:

​ 不加引号:二者都是返回传入的参数

​ 加了引号:$* 把所有参数当做一个字符串整体,$@ 把每一个传入的参数当做一个字符串返回


shell变量替换

[root@nginx opt]# url=www.baidu.com.cn
[root@nginx opt]# echo $url
www.baidu.com.cn
[root@nginx opt]# echo ${url#*.}		# 从头开始匹配,删除匹配到的第一个
baidu.com.cn
[root@nginx opt]# echo ${url##*.}		# 从头开始匹配,删除匹配到的所有
cn
[root@nginx opt]# echo ${url%.*}		# 从尾开始匹配,删除匹配到的第一个
www.baidu.com
[root@nginx opt]# echo ${url%%.*}		# 从尾开始匹配,删除匹配到的所有
www
[root@nginx opt]# echo ${url/baidu/lol}		# 替换变量,旧的替换为新的,只替换匹配到的第一个
www.lol.com.cn
[root@nginx opt]# echo ${url//c/C}		# 替换变量,旧的替换为新的,替换匹配到的所有
www.baidu.Com.Cn
[root@nginx opt]# 

if语句中的文件比较

条件成立,则执行&&后面的内容			# &&
条件不成立,则执行 || 后面的		# ||
原文地址:https://www.cnblogs.com/xueheng36/p/11717073.html