设为首页 收藏本站

运维网

查看: 348|回复: 0

[经验分享] linux shell记录

[复制链接]

尚未签到

发表于 2018-5-16 12:50:01 | 显示全部楼层 |阅读模式
1.if [ $? -ne 0 ]

  ./why_linux


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

  我们的系统都有一个
  Expands  to  the status of the most recently executed foreground pipeline.
  扩展到最后执行的前台状态管道
  也说就是
  我C语言main有一个return
  shell 也有一个 exit
  脚本中的 $? 就是上一次脚本调用的return或是exit 的返回值
  >比如
如果你的程序
  >whylinux.c


#include <stdio.h>
int main(int argc,char *argv[])
{
printf("\nDemo\n");
return 0;
}  
  >这里return的是0
那么
gcc whylinux.c -o whylinux

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

2.if [ -f &quot;xxx.xx&quot;  ]

  判断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脚本函数


  • 定义函数
    [ function ] funname [()]
    {
    action;
    [return int;]
    }
  • 说明
      1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
    2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255



4.Shell获取ini文件内容


  •   实例
    __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)
  • 说明
      参数 ini文件名,组名,键名
    没有return,函数返回值是函数最后一行命令的执行结果



5.Shell字符串连接


  •   实例
    ConfigZip=${MAC}&quot;.zip&quot;

  • 说明
      MAC是一个变量值,如果想要在这个变量值后面连接其他字符串,则用{}将该变量值括起来,表明该变量是要进行字符串连接的。



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


  • 实例
    grep -q &quot;ok&quot; /update.txt
    if [ $? -eq 0 ]; then
    sync
    reboot -f
    fi
  • 说明
      update.txt文件中如果有ok字符串,则$?等于0



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


  •   实例
    ST1=&quot;12345678912345678900000000&quot;
    ConfigZip=${ST1:18:8}&quot;.zip&quot;
    echo &quot;$ConfigZip&quot;

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



8.Shell获取字符串长度


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

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



9.Shell变量运算


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

    StrLength=${#ConfigZip}
    echo $(($StrLength-8)) >> /mdev.txt
    echo ${ConfigZip:$(($StrLength-8))} >> /mdev.txt
  • 说明
      第一行获取private_config.dat中字符串的内容,第二行获取其字符串长度,第三行算出StrLength字符串长度-8后  的长度,第四行输出ConfigZip这个字符串的长度-8后的位置到结束的字符串内容。



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


  •   实例

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



运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

关注运维网官方微信X

关注运维网官方微信

扫描二维码关注运维网官方微信,最新一手资源尽在官方微信!快快关注我们吧...

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


独家合作伙伴: 青云cloud

快速回复 返回顶部 返回列表