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

  • 相关阅读:
    SQL Server 查看物理页存储
    Sql Server 孤立用户解决办法
    大文件下载
    UITableViewCell
    xib文件的使用
    UIToolbar
    UIView常见的属性和方法
    iOS的三种多线程技术:
    网络处理文件上传、获取文件MIMEType、其他HTTP请求方式
    转场动画过渡效果
  • 原文地址:https://www.cnblogs.com/justff/p/3457609.html
Copyright © 2011-2022 走看看