linux shell记录

1.if [ $? -ne 0 ]

./why_linuxlinux

if [ "$?" != "0" ]; then 
    echo "Error run Environment"
    exit 1
fi

咱们的系统都有一个shell

Expands to the status of the most recently executed foreground pipeline.ide

扩展到最后执行的前台状态管道函数

也说就是ui

我C语言main有一个returncode

shell 也有一个 exit ip

脚本中的 $? 就是上一次脚本调用的return或是exit 的返回值字符串

好比
若是你的程序it

whylinux.cpip

#include <stdio.h>
int main(int argc,char *argv[])
{
    printf("\nDemo\n");
    return 0;
}  

这里return的是0
那么
gcc whylinux.c -o whylinux

上面的脚本不会出错提示了

2.if [ -f "xxx.xx" ]

判断xxx.xx是否存在 存在则执行下面的指令

if [ -f "$U_Mount_Dir$Update_File"  ]; then
        echo "Exit Update_File $Update_File" >> /mdev.txt
 fi

若是$U_Mount_Dir$Update_File存在,则输出信息到/mdev.txt文件中

3.Shell脚本函数

  1. 定义函数
    [ function ] funname [()]
    {
    action;
    [return int;]
    }
  2. 说明

    一、能够带function fun() 定义,也能够直接fun() 定义,不带任何参数。
    二、参数返回,能够显示加:return 返回,若是不加,将以最后一条命令运行结果,做为返回值。 return后跟数值n(0-255

4.Shell获取ini文件内容

  1. 实例
    __readINI() {
    INIFILE=$1; SECTION=$2; ITEM=$3
    _readIni=awk -F '=' '/\['$SECTION'\]/{a=1}a==1&&$1~/'$ITEM'/{print $2;exit}' $INIFILE
    echo ${_readIni}
    }

    MAC=$(__readINI /mnt/yaffs2/publicgateway/private.ini privateinfo equiment_mac)
  2. 说明

    参数 ini文件名,组名,键名
    没有return,函数返回值是函数最后一行命令的执行结果

5.Shell字符串链接

  1. 实例
    ConfigZip=${MAC}".zip"

  2. 说明

    MAC是一个变量值,若是想要在这个变量值后面链接其余字符串,则用{}将该变量值括起来,代表该变量是要进行字符串链接的。

6. Shell判断一个文件中是否有指定的字符串

  1. 实例
    grep -q "ok" /update.txt
    if [ $? -eq 0 ]; then
    sync
    reboot -f
    fi
  2. 说明

    update.txt文件中若是有ok字符串,则$?等于0

7.Shell截取一个字符串的指定位置到指定位置的内容

  1. 实例
    ST1="12345678912345678900000000"
    ConfigZip=${ST1:18:8}".zip"
    echo "$ConfigZip"

  2. 说明

    ${ST1:18:8}意思是截取ST1这个字符串的第18个字符后的8个字符串,截取后echo输出的字符串为00000000

8.Shell获取字符串长度

  1. 实例
    ConfigZip=$(cat /private_config.dat)
    StrLength=${#ConfigZip}

  2. 说明

    第一行获取private_config.dat文件中的字符串到ConfigZip变量中,第二行获取ConfigZip字符串的长度

9.Shell变量运算

  1. 实例
    ConfigZip=$(cat /private_config.dat)

    StrLength=${#ConfigZip}
    
    echo $(($StrLength-8)) >> /mdev.txt
    
    echo ${ConfigZip:$(($StrLength-8))} >> /mdev.txt
  2. 说明

    第一行获取private_config.dat中字符串的内容,第二行获取其字符串长度,第三行算出StrLength字符串长度-8后 的长度,第四行输出ConfigZip这个字符串的长度-8后的位置到结束的字符串内容。

10.Linux中的/dev/null 2 > &1

  1. 实例

    if (ls $ConfigZip > /dev/null 2>&1)
  2. 说明

    0:表示键盘输入(stdin)1:表示标准输出(stdout),系统默认是1 2:表示错误输出(stderr)'>':表示重定向到哪里 /dev/null:表示Linux的空设备文件 2:表示标准错误输出&1:&表示等同于的意思,2>&1,表示2的输出重定向等于于11>/dev/null:表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,不显示任何信息。2>&1:表示标准错误输出重定向等同于标准输出,由于以前标准输出已经重定向到了空设备文件,因此标准错误输出也重定向到空设备文件。这条命令的意思就是在后台执行这个程序,并将错误输出2重定向到标准输出1,而后将标准输出1所有放到/dev/null文件,也就是清空.因此能够看出" >/dev/null 2>&1 "经常使用来避免shell命令或者程序等运行中有内容输出。

相关文章
相关标签/搜索