Shell成长之路

  1. #!/usr/bin/env bash 与#!/usr/bin/bash
    • #!/usr/bin/env bash提供了不同系统的灵活性,只要程序在$PATH中
  2. dirnameasename
    • dirname:父目录
      • `dirname $0`:获取当前脚本的目录;curpath=$(cd $(dirname $0);pwd -P)
    • basename:最后的目录名或者文件名
  3. $0$?$!$$$*$#$@$1~$n$-
    • $0:shell本身的文件名
    • $1~$n:添加到shell的各个参数值
    • $?:最后运行命令的返回值
    • $!:shell最后运行的后台Process的PID
    • $$:shell本身的PID
    • $*:所有参数列表
    • $@:所有参数列表,可做数组用
    • $#:添加到shell的参数个数
    • $-:显示shell使用的当前选项,与set命令功能相同
  4. (set -o posix;set)|less
    • set:显示所有shell变量
      • -x 会在执行每一行 shell 脚本时,把执行的内容输出来。它可以让你看到当前执行的情况,里面涉及的变量也会被替换成实际的值。
      • -e 会在执行出错时结束程序,就像其他语言中的“抛出异常”一样。
      • -a 将变量提升为环境变量
    • set -o posix:在POSIX兼容模式
  5. $(),``,$(())
    • ``:\会转义,单个忽略
    • ():转义
    • $(()):用于整数运算
  6. trap:针对指定信号采取指定动作,trap "" INT(屏蔽SIGINT信号)
    • -l:把所有信号打印出来
    • -p:把当前的trap设置打印出来
原文地址:https://www.cnblogs.com/liudingchao/p/11251052.html