#退出shell脚本 exit #定义一个变量并为其赋值 #变量无需首先声明类型,"="号两边不能有空格 #对一个已有值的变量赋值,新值取代旧值 demo="hello world" #在使用该变量的时候需要加$号使用 echo $demo #shell脚本执行 (1).先对shell脚本添加执行权限 (2).通过./XXX.sh或者 sh XXX.sh执行脚本(XXX为脚本名) #bash和sh的区别 sh是bash的子集,具体区别可以参考: http://www.cnblogs.com/hopeworld/archive/2011/03/29/1998488.html #数组操作 一对括号表示是数组,数组元素使用“ ”符号分开 a=(1 2 3 4 5) #获取数组长度,格式:${#数组名[@ OR *]} echo ${#a[@]} echo ${#a[*]} #输出指定下标的值,下标从0开始,格式:${数组名[下标]} echo ${a[2]} #输出整个数组的内容,格式:${数组名[@ OR *]} echo ${a[@]} echo ${a[*]} #清楚数组中的对应元素,格式:unset 数组名[下标] unset a[1] #清楚整个数组中的元素,格式:unset 数组名 unset a #截取数组,格式:${数组名[@ OR *]:起始位置:长度} ${a[@]:0:3} ${a[*]:0:3} #替换数组中的指定内容,格式:${数组名[@ OR *]/查找字符串/替换字符串} ${a[*]/2/50} #将字符串拆分为数组,利用IFS进行分割 #X代表使用的分割符,使用时先将初始状态保存,使用完毕后还原 IFS=“ X” #if语句,格式 #........................................... if .... then ..... elif ... then .... else .... fi #注意条件测试部分中的空格。方括号两侧都有空格,在-f、-lt、=等符号两侧同样有空格 [ -f "$file" ] : 判断$file是否是一个文件 [ -x "$file" ] : 判断$file是否存在且有可执行权限, -r 测试文件可读性 [ -n "$a" ] : 判断变量$a是否有值 [ -z "$a" ] : 判断变量$a是否为空字符串 [ $a -lt 3 ] : 判断$a的值是否小于3,-gt和-le分别表示大于或小于等于 [ "$a" = "$b" ] : 判断$a和$b的取值是否相等 [ cond1 -a cond2 ] : 判断cond1和cond2是否同时成立(相当于&&),-o表示有一成立(相当于||) #........................................... eg. if [ $# -lt 3 ] then echo $*; else echo $0; echo "参数过多不在控制台显示"; fi #while循环,格式 while [ cond1 ] && { | } [ cond2 ] ... do ... done eg. i=10; while [[ $i -gt 5 ]] do echo $i; ((i--)); done #for循环,格式 for var in ... do ... done for (( cond1; cond2; cond3 )) do ... done eg. for i in $(seq 10) do echo $i; done for((i=1;i<=10;i++)) do echo $i; done #until循环,格式 until [ cond1 ] && { || } [ cond2 ] … do … done eg. a=10; until [[ $a -lt 0 ]] do echo $a; ((a--)); done #case语句,格式 ;; <<====>>break作用 case var in pattern 1 ) … ;; pattern 2 ) … ;; *) … ;; esac eg. case $1 in start | begin) echo "start something" ;; stop | end) echo "stop something" ;; *) echo "Ignorant" ;; esac #select交互语句,格式 select var in … do .... break; done eg. select ch in "begin" "end" "exit" do case $ch in "begin") echo "start something" ;; "end") echo "stop something" ;; "exit") echo "exit" break; ;; *) echo "Ignorant" ;; esac done ## 注意这里交互输入要输入1,2,3,而不是beign,end,exit #function语句,格式 functionname() { … } # 函数名前面多了个function关键字 function functionname() { … } eg. ###### 函数定义 ###### echo "函数定义"; # 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。 function hello() { echo "Hello!"; } function hello_param() { echo "Hello $1 !"; } ###### 函数调用 ###### echo "函数调用"; hello; ###### 参数传递 ###### echo "函数传参调用"; hello_param ben; ###### 函数文件 ###### echo "函数文件调用"; # 调用函数文件,点和demo_call之间有个空格 . demo_call.sh; # 调用函数 callFunction ben; ###### 载入和删除 ###### echo "载入和删除"; # 用unset functionname 取消载入 # unset callFunction; # 因为已经取消载入,所以会出错 # callFunction ben; ###### 参数读取 ###### echo "参数读取"; # 参数读取的方式和终端读取参数的方式一样 funWithParam() { echo "The value of the first parameter is $1 !" echo "The value of the second parameter is $2 !" echo "The value of the tenth parameter is $10 !" echo "The value of the tenth parameter is ${10} !" echo "The value of the eleventh parameter is ${11} !" echo "The amount of the parameters is $# !" echo "The string of the parameters is $* !" } funWithParam 1 2 3 4 5 6 7 8 9 34 73 ###### 函数return ###### echo "函数return"; funWithReturn() { echo "The function is to get the sum of two numbers..." echo -n "Input first number: " read aNum echo -n "Input another number: " read anotherNum echo "The two numbers are $aNum and $anotherNum !" return $(($aNum+$anotherNum)) }funWithReturn # 函数返回值在调用该函数后通过 $? 来获得 echo "The sum of two numbers is $? !" #函数文件demo_call.sh function callFunction() { echo "callFunction $1 !"; return 1; } 参考文章: http://blog.csdn.net/birdben/article/details/52157271
shell脚本基本命令
最新推荐文章于 2024-06-04 10:21:33 发布