shell编程

亡梦爱人 提交于 2019-12-01 17:48:16

shell特殊变量:

$0 当前脚本的文件名

$n 传递给脚本或函数的参数; n 是一个数字,表示第几个参数;也可以用于函数的参数

$# 传递给脚本或函数的参数个数

$* 传递给脚本或函数的所有参数

$@ 传递给脚本或函数的所有参数

$? 上个命令的退出状态,或函数的返回值

$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID

 

$* 和 $@ 的区别:

$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号""包含时,都以"$1" "$2" … "$n" 的形式输出所有参数

当它们被双引号""包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数

 运算符: 

算术运算符:+ - * / % =(赋值) == !=

关系运算符:-ne -eq -gt -lt -ge -le

布尔运算符:!(非) -o(或) -a(与)

字符串运算符:== != -z(空) -n(非空)

文件测试操作:

-e 文件是否存在

-f 是否为普通文件

-d 是否为目录

-w 是否具有写权限

-x 是否具有执行权限

条件语句: 

if <condition>

then

  <statement>

fi

 

if <condition>

then

  <statement>

elif <condition>

then

  <statement>

else

  <statement>

fi

 

case <variable> in <range>

  <value>)

    <statement>

  ;;

  ...

esac

 循环语句: 

while <condition>

do

  <statement>

done

 

for <variable> in <range>

do

  <statement>

done

 shell函数:

<function_name>(){

  <statement>

}

  函数调用以及传参: <function_name> <para1> <para2>...<paran>

 shell替换:

`` <=> $() 命令替换

$ 、${} 变量替换,一般情况下没有区别

$(()) 其中的变量名称,可于其前面加 $ 符号来替换,也可以不用

[[是 bash 程序语言的关键字,支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式;

字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,而[]内不能使用正则

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!