zoukankan      html  css  js  c++  java
  • bash陷阱

    节选自:http://bash.cumulonim.biz/BashPitfalls.html

    原文有43个bash pitfall,这里挑了5个我认为比较重要的,和大家分享一下

    同时建议大家都读一读原文


    1. for i in $(ls *.mp3)
    错误:
    如果文件名包含空格,譬如:01 - Don't Eat the Yellow Snow.mp3,上述语句会将文件名分拆为7个部分:01,-,Don't,Eat,the,Yellow,Snow.mp3
    ls是多余的
    正确写法:
    for i in *.mp3; do
    [[ -f "$i" ]] || continue
    some command "$i"
    done

    2. cd /foo; bar
    错误:
    考虑这样的语句:cd /NonexistentDir; rm -rf *
    目录/NonexistentDir不存在,第一条语句执行失败,第二条语句删除当前目录下所有文件及文件夹
    正确写法:
    cd /foo && bar

    3. echo $foo
    错误:
    msg="Please enter a file name of the form *.log"
    echo $msg
    正确写法:
    echo "$msg" 当msg中包含-n之类的内容时也会出现问题
    100%安全的写法是
    printf "%s " "$foo"

    4. echo "Hello World!"
    错误:
    默认环境的bash会解析!为历史命令符,且对!的转义无效
    正确写法:
    echo 'Hello World!'

    set +H
    echo "Hello World!"

    histchars=

    5. somecmd 2>&1 >logfile
    错误:
    仍然会打印错误信息
    正确写法:
    somecmd &> logfile
    或somecmd > logfile 2>&1

  • 相关阅读:
    windows下载
    vue-element-admin改造步骤
    js处理url
    好用的工具
    数据库设计工具
    虚拟机使用
    Mac上编译C
    MAC系统配置
    SQL语法
    SSMP一次请求数据处理过程分析
  • 原文地址:https://www.cnblogs.com/justff/p/3457609.html
Copyright © 2011-2022 走看看