zoukankan      html  css  js  c++  java
  • linux shell脚本相关知识

    最近的项目中,有一个编写linux shell脚本的任务。由于之前不是很熟悉,在这个过程中遇到了很多困难,查找了很多资料,也收获了很多。下面是linux shell脚本中常用的知识总结。

    1基础语法

    1.1变量

    使用一个定义过的变量,只要在变量名前面加美元符号即可
    your_name="qinjx"
    echo $your_name
    echo ${your_name}

    1.2字符串

    字符串可以用单引号,也可以用双引号,也可以不用引号。

    单引号

    单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
    单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

    双引号

    双引号里可以有变量

    双引号里可以出现转义字符

    1.3传递参数

    $# 表示执行脚本传入参数的个数

    $* 表示以一个单字符串显示所有向脚本传递的参数。

    如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。

    $$ 表示脚本运行的当前进程ID号

    $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。

    如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。

    $0 表示执行脚本名称

    $1 表示第一个参数

    $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

    1.4基本运算符

    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

    expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

    val=`expr 2 + 2`
    

    条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]。

    乘号(*)前边必须加反斜杠()才能实现乘法运算;

    if...then...fi 是条件语句,后续将会讲解。

    在 MAC 中 shell 的 expr 语法是:$((表达式)),此处表达式中的 "*" 不需要转义符号 "" 。

    2常用命令

    2.1printf 命令

    printf 命令的语法:

    printf format-string [arguments...]

    printf "%-10s %-8s %-4s " 姓名 性别 体重kg

    %s %c %d %f都是格式替代符

    %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。

    %-4.2f 指格式化为小数,其中.2指保留2位小数。

    2.2test 命令

    test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。

    文件表达式

    -e filename 如果 filename存在,则为真
    -d filename 如果 filename为目录,则为真
    -f filename 如果 filename为常规文件,则为真
    -L filename 如果 filename为符号链接,则为真
    -r filename 如果 filename可读,则为真
    -w filename 如果 filename可写,则为真
    -x filename 如果 filename可执行,则为真
    -s filename 如果文件长度不为0,则为真
    -h filename 如果文件是软链接,则为真
    filename1 -nt filename2 如果 filename1比 filename2新,则为真。
    filename1 -ot filename2 如果 filename1比 filename2旧,则为真。

    字符串变量表达式

    If [ $a = $b ] 如果string1等于string2,则为真(字符串允许使用赋值号做等号)
    if [ $string1 != $string2 ] 如果string1不等于string2,则为真
    if [ -n $string ] 如果string 非空(非0),返回0(true)
    if [ -z $string ] 如果string 为空,则为真
    if [ $sting ] 如果string 非空,返回0 (和-n类似)

    2.3read命令

    -n(不换行) -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显)
    如:

    read -p "Enter your name:" name
    

    3压缩与解压缩

    解压:tar -zxvf FileName.tar
    压缩:tar -czvf FileName.tar DirName

    3.1五个独立命令

    压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。

    -c: 建立压缩档案
    -x:解压
    -t:查看内容
    -r:向压缩归档文件末尾追加文件
    -u:更新原压缩包中的文件

    3.2 五个可选参数

    根据需要在压缩或解压档案时可选的。
    -z:有gzip属性的
    -j:有bz2属性的
    -Z:有compress属性的
    -v:显示所有过程
    -O:将文件解开到标准输出

    3.3 一个必选参数

    -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名

  • 相关阅读:
    盒子模型中问题
    outline
    高度自动相等方法
    正则表达式
    绝对定位 相对定位
    replace 使用函数作为第二参数
    float 浮动
    line-height 行高
    元素隐藏
    现代浏览器内部
  • 原文地址:https://www.cnblogs.com/leton/p/11895964.html
Copyright © 2011-2022 走看看