学游者

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

shell的要点

shell介绍就不介绍了,记录下shell的一些常用的要点总结,以后使用的时候可以直接查询。

1、shell的启动

每一个shell脚本的使用,都需要使用到脚本解释器。直接使用下面的脚本解释器

#!/bin/bash

我们可以通过 cat /etc/shell 命令查询linux中,那些命令是正确的

2、变量处理

shell中的变量分为3类:数字、字符串、文件,每一类的处理方式都不相同。

a、数值处理

数值运算、比较记录在下面表格


ps:==,!=与-eq ,-ne在[[]]中效果相同,在`expr `中需要使用到-ne,-eq来做比较。

b、字符串

字符串还有一些特殊的使用

${#varname}:输入字符串长度
${varname:index:long}:从第index开始截取long个字符

c、文件

d、逻辑操作

e、符号

单引号:使用会忽略特殊字符原样输出

双引号:使用会替换变量

反引号:将系统命令的输出插入到这个字符串,和$()一样,后者可移植性不高

$(commond ):功能和反引号一样。

((exp;exp;exp)):双括号一般做数值的扩展运算
  
   eg:a=10

       ((a=a+1))  //直接在将a的值变为11,整个a都会变化。
       b=$(( $a + 1 ))  //将a的值加1,然后赋值给b,但是a不会变化。和b=`expr $a + 1`作用一样

ps:
1.`commond`和$(commond)作用一样,如果用来做数值运算,比较。则必须使用expr命令,`expr `和$(expr),或者直接用$((运算;比较))。
2.如果流程控制for做运算,如:c的for((int i ;i<num;i++)),则必须用(())双括号。

f、内部参数

执行命令:
# ls s1 s2 s3 s3 s5

解析的时候,会将输入的值做参数化处理
$0:./test2.sh 脚本的文件名
$1=s1...(一般$0为./xxx.sh,$1才是我们需要的参数)
$#=5 :多少个值
$?:上一个命令,正常退出返回0,反之为非0值。《《重要》》
$*="s1 s2 s3 s3 s5" 参数组成的字符串


我们一般使用 $? 来判断上一个命令是否执行成功,其返回值如下

e、数组

赋值
a=(1 2 3 4)

使用
${a} = 1 //输出第0个
${a[n]} (n为下标)
${a[@]}/${a[*]}:数组的所有值
${#a[@]}/${#a[*]}:数组的长度

3、流程控制

if流程

a、

if [[ 表达式 ]]
then  操作
elif [[ 表达式 ]]
then  操作
esle  操作
fi  
    

for流程

使用一:
for varname IN item1 item2 (空格隔开)
do
  #执行语句1
  #执行语句2
done
 
使用二:  
for ((int i ;i <num ;i++))
do
  #执行语句
  #执行语句
done

case流程

case ${varname} in
  模式1)
      #执行语句1...
      #执行语句2... 
  模式2)
      #执行语句1...
      #执行语句2... 
  模式3)
      #执行语句1...
      #执行语句2... 
      break
esac


模式:${var_name}必须是变量或常数
Ⅰ.自然数
Ⅱ.字符串,[pattern],使用的是正则表达式匹配

while流程

while [[表达式]]
do
    #执行语句1...
    #执行语句2...
done

unitl流程

until循环执行一系列命令直至条件为真时停止。
until [[表达式]]
do 
  执行语句
  执行语句
done

4、键盘输入

使用(需要使用空格间隔开)
read var1 var2 var3 

用户输入:
a b c

结果:var1=a,var2=b,var3=c

5、函数

定义:
function  function_name(){
   list of commands;
   [return value]
}

删除:
unset .f function_name

ps:将函数作为一个命令来使用,也就是可以使用$?,$*,$#;来做判断

6、sleep

睡眠多少秒

echo "now : `date` "
sleep 10
echo "now : `date` "

输出

now : Mon May 23 14:59:40 CST 2016 
now : Mon May 23 14:59:50 CST 2016
posted on 2024-06-18 20:33  学游者  阅读(25)  评论(0)    收藏  举报