Linux中Shell脚本的符号说明

Linux中Shell脚本的符号说明

#!脚步中的第一句,指明执行脚本使用的程序

示例:#!/bin/bash

# 注释,用于帮助信息或者忽略暂时不执行的语句

示例:# echo “hello”

# this is a comment

$ 变量替换符号

示例:a=123;echo $a

${} 变量正规表达式,避免变量名提前截断

示例:${13}

$num 位置参数

示例:$0,$1,…,${10}

$? 最后一个命令的推出状态,一般0表示正确,其他表示错误

示例: if [ $?-ne 0 ]; then

echo “encounter error”

fi

$! 最后一个命令执行的后台命令的ID

示例:pid=$!

$$ 运行脚本进程的ID

示例:pid=$$

$* 传递到脚步的参数,加双引号时相当于”$1$2 …”

示例:echo “Theparameters are $*”

$@ 与$*相同,加双引号相当于”$1”“$2” …

示例:a=$@

$# 传递到脚本中的参数个数,不包含$0参数

示例: echo “theparameter number is $#”

$- 保存当前shell的设置信息,如果结果中有i,则表示为交互式shell

示例: echo $-

;  将多个指令写在同一行上的分隔符

示例:a=123;echo $a

;; 专用语case选项,作用类似于C语言switch语句中的break

示例: case${tao} in

a)      echo “a” ;;

b)      echo “b” ;;

esac

. 一个表示当前目录,两个表示上一级目录

示例:cd ..

, 类似于C语言中的逗号表达式

示例:let “t1=((a=5+3,b=7-1,c=15/3))”;echo $t1

! 表示逻辑运算法“非”

示例:if [ “$?”!= “0” ]; then

echo “Execute error”

exit 1

fi

: 在bash中,这是一个内建命令,“什么都不干“,但是返回状态值为0

示例: :; echo$?; :> f.out    相当于cat/dev/null > f.out

? 通配符,匹配任意一个字符,但是不包括null

示例:ls f?n

‘’ 将其内容当作字符串,$和通配符均不扩展或者转义

示例:a=1; echo ‘$a’        结果为$a

“” 将其内容作为字符串,但是$可以扩展,通配符不可以

示例:b=”string”;echo “$b”  结果为string

`` 反引号(在键盘数字1左边),其中的字符串会当成命令执行

示例:a=`date`;echo “$a”

() 指令群组,将一串指令括起来,执行时shell会产生subshell来执行它们

示例:(a=1;echo$a)

(()) bash的内建功能,用于算数运算

示例:a=10;echo$a;((a++)); echo $a

[] 同test作用相同,用于表达式真假的判断

示例: if [ 1-eq 2];then

echo‘kill me’

fi

[[]] bash对[]的加强版,当中允许使用||和&&,并且可以使用正则表达式

示例:read ver

if [[ $ver > 5 && $ $ver

echo“that’s it”

fi

{} 指令群组,类似于(),但在当前shell中执行,还可以用于字符串的组合

示例: mkdir{userA, userB, userC} - {home, bin, data}

\ 正则表达式,匹配单词的词首和词尾

示例: find ‘\’file

+ 加法,正则表达式中表示字符重复1~n次

示例: grep ‘10\+9’file

- 减法,标准输入,cd命令中表示上一次的工作目录

示例: expr 1 -2 + 3; tar -zxfv -; cd –

* 乘法,通配符,表示任何字符;一个字符重复0~n次

示例:let  “var=2*3”; ls zha*t; grep ‘a1[0-9]*’

** 次方运算

示例:let “var=2**8”

/ 除法;目录分隔符

示例:expr 10/2;cd /home/zc

% 取余

示例:expr 10 %2

= 赋值;字符串比较,在[]和[[]]中不同(参见==)

示例: a=”we”;if [ $a == ‘wee’ ]; then exit0 fi

== 字符串比较,同单个等号

示例: a=’we’

if[[ $a == w* ]]; then

echo“ok”

fi

!= 字符串比较,不等于

示例: if [ “$a”!= “$b” ]; then …

示例: cat>test

示例: 110

> 输出重定向,文件存在覆盖,不存在则新建

示例: ls>out 2>&1

>> 输出重定向,文件存在追加,不存在则创建

示例: ls>>out

& 后台执行工作符

示例: tar zcvfdata.tar.gz data >/dev/null &

&& 逻辑与,短路操作符

示例: cp 1.txt2.txt && rm 1.txt && echo ‘success’

| 管道操作符

示例: cat file| grep ‘fan’

|| 逻辑或,短路操作符

示例: rm 1.txt|| echo ‘fail’

~ 根目录

示例: cd ~

^ 正则表达式中匹配行的开头

示例: grep ‘^home’file

\ 转义字符,续行符号

示例: echo “\$A=$A\

This is the first line”;

相关推荐