linux Shell

shell是一个作为用户与Linux系统间接口的程序,它允许用户向操作系统输入需要执行的命令

基本

重定向

0   标准输入 <  <<
1   标准输出 >  >>
2   错误输出 2> 2>>

<是输出, <<是以附加的方式输出
>& kill -9 1234 >killouterr.txt 2>&1

管道

管道用操作符 '|'

脚本

格式

第一行指定执行shell的文件,一般是#!/bin/bash或#!/bin/sh

运行

* 直接运行 sh xx.sh 或者 bash xx.sh
* 可执行文件 chmod +x xx.sh 然后 ./xx.sh

Shell语法(*)

变量

引号

环境变量

条件

test或[命令

if test -f file.c ; then
    ...
fi



if [ -f file.c ]
    ...
fi

控制结构

if语句

if condition
then
    statement
elif condition; then
    statement
else
    statement
fi

for语句

for var in values
do
    statement
done

循环一个序列:

for var in {1..5}
do
    echo $var
done

Bash For Loop Examples

while语句

while condition
do
    statenment
done

while语句

until condition
do
    statenment
done

case语句

case var in
    passtern [| pattern]... ) statement1;;
    passtern [| pattern]... ) statement2;;
    ...
esac

注: 每个模式都以双引号;;结尾

eg.
#!/bin/sh
# case statement
echo "Please answer yes or no"
read ans
case "$ans" in
        yes | y | Yes | YES )   echo "yes";;
        no  | n | No  | NO  )   echo "no";;
esac

exit 0

AND OR列表

&& ||

con1 && con2 && con3
con1 || con2 || con3

语句块

{}

函数

function_name(){
    statement
}

命令

把参数当作表达式来求值

eg.
x=`expr $x + 1`
x=$(expr $x + 1)

注:以下需要单独开一篇总结 find grep regex

补充

算数运算
$((...))
x=$(($x+1))

Special Parameters

TODO vimwiki的转义怎么弄?

The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed.

$* : equivalent to "\$1c\$2c..", where c is the first character of the value of the IFS variable

$@ : $@ is equivalent to "\$1" "\$2"

$# : The number of the parameters

$? : The exit status

$0 : The source file name

参考

–EOF–
linux Shell  •  2013-08-17 07:23

如果显示不正常,请使用Mozilla Firefox或Chrome进行浏览

bigsec.net