shell学习笔记
-
inux中变量$#,$@,$0,$1,$2,$*,$$,$?,@,$^、$<的含义
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell的脚本的第二哥参数
$@ 是传给脚本的所有参数的列表,代表目标文件(target)
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
@ 这个符串通常用在“规则”行中,表示不显示命令本身,而只显示它的结果
$^ 代表所有的依赖文件(components)
区别:$@ $*
相同点:都是引用所有参数
不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数(分别存储在$1 $2 $3)则“ $* ”等价于“$1 $2 $3”(传递了一个参数);$@、$^、$< 用法比较:
Linux中变量$#,$@,$0,$1,$2,$*,$$,$?,@,$^、$<的含义_linux 中的@_my_angle2016的博客-CSDN博客
重定向
通过将命令的标准输出 > 和标准错误输出 2> 都重定向到 /dev/null,所有输出将被丢弃,从而使命令行没有任何输出打印
command >/dev/null 2>&1
如果您只想抑制标准输出而保留标准错误输出
command >/dev/null
利用字符串运算符
strA="helloworld"
strB="low"
if [[ $strA =~ $strB ]]
then
echo "包含"
else
echo "不包含"
fi