当前位置: 首页 > Linux, shell > 正文

你不知道的bash (特殊字符)

题记

  使用Linux有四年多了
  曾经有段时间,也静下心来将bash好好的研究了一把,心满意足的感觉自己“会”了
  随着时间的推移,常用的命令就那么几个,渐渐的,知识面逐渐收缩
  再次看到bash资料时,才发现:“原来可以不用这么绕,原来可以这么直接”
  学习就是一个温故知新的过程,技术就是一个在使用过程中逐渐积累的过程
  这篇文档题目为《你不知道的bash》,其实,更确切的讲,应该是《我不知道的bash》
  在”写下来“的过程中,不仅仅梳理了忘记的东西,还顺带的整理了一些bash中的经典用法
  希望以后不要再忘了

;;

双分号,作为case语句的结束符使用,如:

  case "$variable" in
     abc)  echo "\$variable = abc" ;;
     xyz)  echo "\$variable = xyz" ;;
  esac

**

双星号,(立方),如:

  # Bash, version 2.02, introduced the "**" exponentiation operator.
     
  let "z=5**3"
  echo "z = $z"   # z = 125

$?

结束符,可以是一条命令,一个函数,或者脚本自身的退出码

  cmd
  if [ $? ne 0 ]; then
      exit 2
  fi

$$

进程号,表示脚本自身的进程号,经常看到有人使用$$作为随机数,如:

  cmd
  ramdom=$$

$!

上一条命令的pid,经典用法,杀掉超时的前一个作业

  possibly_hanging_job & { sleep ${TIMEOUT}; eval 'kill -9 $!' &> /dev/null; }

$_

上一条命令的参数

{xxx,yyy,zzz,…}

加强扩展,如

  cat {file1,file2,file3} > combined_file
  # 将 file1, file2, 和 file3 合并入 combined_file
     
  cp file22.{txt,backup}
  # 将 "file22.txt" 复制为 "file22.backup"

=~

文本判断时的正则表达式, 如:

  if [ "$input" =~ "[0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]" ]
      # 引号可要可不要
      # 格式 NNN-NN-NNNN
  then
      echo "Social Security number."
      # Process SSN.
  else
      echo "Not a Social Security number!"
      # Or, ask for corrected input.
  fi

&>

重定向,是不是经常使用这种语句

  command > filename 2 >&1

其实你还可以这样,将标准输出和错误输出同时定向

  command &>filename 

$*

所有的位置参数,看作一个整体来使用,具体操作时 $* 需要用引号(“)引起来

$@

和 $* 相同,但是在具体操作的时候,bash将每个位置参数分开来看,如:

  #!/bin/bash

  echo '$*'
  index=1

  for arg in "$*" 
  do
    echo "Arg #$index = $arg"
    let "index+=1"
  done

  echo ‘$@’
  index=1

  for arg in "$@"
  do
    echo "Arg #$index = $arg"
    let "index+=1"
  done 

执行结果如下, 可以看到 $*将所有的参数看作了整体, $@将参数分开对待了:

  ./test 1 2 3 4
  $*
  Arg #1 = 1 2 3 4
  $@
  Arg #1 = 1
  Arg #2 = 2
  Arg #3 = 3
  Arg #4 = 4

to be continue …

    分享到:

本文固定链接: http://klwang.info/bash-you-don-not-konw-special-character/ | 数据库|Linux|软件开发

该日志由 klwang 于2013年06月17日发表在 Linux, shell 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 你不知道的bash (特殊字符) | 数据库|Linux|软件开发
关键字: , ,

你不知道的bash (特殊字符):等您坐沙发呢!

发表评论

*
快捷键:Ctrl+Enter