linux-脚本问题汇总

实际编写脚本过程中,会有各种各样小的问题或者细节,没有注意。都汇总到这篇文章。

  1. cp 命令复制文件时,如需覆盖文件需要每个文件需要手动确认是否覆盖,cp -rf不起作用

    alias cp
    # Linux默认为cp设置了别名
    alias cp='cp -i'
    #或者查看.bashrc文件
    cat ~/.bashrc 
    
    #在执行脚本中上重新命令cp别名,当前shell脚本下有效
    alias cp='cp'
    

    ubantu默认为cp命令配置了别名,如上所示,默认加了-i参数。所以脚本中

  2. 相对路径和绝对路径

    #!/bin/bash
    cd ../
    echo `pwd`
    echo $PWD
    

    脚本中的相对路径是针对执行脚本的路径而言的。上述代码打印的路径总是随着用户执行路径变化

    #!/bin/bash
    abspath=`dirname $0`
    echo $0
    echo $abspath
    #cd `dirname $0`
    cd $abspath
    echo `pwd`
    echo $PWD
    
    ##打印信息如下
    sh app/test.sh 
    # 如下$0的内容取决于调用命令,如果调用命令是./app/test.sh,则返回./app
    app/test.sh
    app
    /opt/app
    /opt/app
    

    上面的的脚本总是输出文件所在的路径

    • $0返回调用当前脚本的路径
    • dirname:输出$0去掉尾部的"/"字符后面的路径;如果名称中不包含"/",则显示"."(表示当前目录)。

    脚本中如果使用了相对路径,在脚本最开始的地方最后先执行cd切换至当前路径。这样可以避免在其他路径下调用该脚本,相对路径转换问题。

    参考资料

原文地址:https://www.cnblogs.com/froggengo/p/15156673.html