shell之常用命令,函数,重定向和文件包含

shell的知识点并不多,这里简单介绍一下常用的一些东西

常用命令

echo

  • 显示普通字符串

    1
    echo "test"
  • 显示转义字符

    1
    echo "\"test\""
  • 显示变量

    1
    echo "$key"
  • 显示换行

    1
    echo -e "OK! \n" # -e 开启转义
  • 显示不换行

    1
    echo -e "OK! \c" # -e 开启转义 \c 不换行
  • 显示结果定向至文件

    1
    echo "test" > myfile
  • 原样输出字符串,不进行转义或取变量(用单引号)

    1
    echo '$name\"'
  • 显示命令执行结果

    1
    echo `date`

printf

命令的语法

1
printf format-string [arguments...]

test

test命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试

  • 数值测试
参数 说明
-eq 等于则为真
-ne 不等于则为真
-gt 大于则为真
-ge 大于等于则为真
-lt 小于则为真
-le 小于等于则为真

e.g.

1
2
3
4
5
6
7
8
num1=100
num2=100
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi

  • 字符串测试
参数 说明
= 等于则为真
!= 不相等则为真
-z 字符串 字符串的长度为零则为真
-n 字符串 字符串的长度不为零则为真

e.g.

1
2
3
4
5
6
7
8
num1="ru1noob"
num2="runoob"
if test $num1 = $num2
then
echo '两个字符串相等!'
else
echo '两个字符串不相等!'
fi

  • 文件测试
参数 说明
-e 文件名 如果文件存在则为真
-r 文件名 如果文件存在且可读则为真
-w 文件名 如果文件存在且可写则为真
-x 文件名 如果文件存在且可执行则为真
-s 文件名 如果文件存在且至少有一个字符则为真
-d 文件名 如果文件存在且为目录则为真
-f 文件名 如果文件存在且为普通文件则为真
-c 文件名 如果文件存在且为字符型特殊文件则为真
-b 文件名 如果文件存在且为块特殊文件则为真

e.g.

1
2
3
4
5
6
7
cd /bin
if test -e ./bash
then
echo '文件已存在!'
else
echo '文件不存在!'
fi

1
2
3
4
5
6
7
cd /bin
if [ -e ./bash ]
then
echo '文件已存在!'
else
echo '文件不存在!'
fi

函数

函数的定义格式

1
2
3
4
5
[ function ] funname [()]
{
action;
[return int;]
}

注:function是可选参数,函数的返回值:如果没有return,那么将以最后一条命令的运行结果作为返回值
如果前括号写在函数名后,一定要留有空格,如果函数名后带有(),此时可以不用空格
e.g.

1
2
3
4
5
6
7
funcTest() {
echo "func test"
echo $1
}
echo "func start"
demoFun 2
echo "func stop"

函数返回值在调用该函数后通过$?来获得

重定向

命令 说明
command > file 将输出重定向到 file
command < file 将输入重定向到 file
command >> file 将输出以追加的方式重定向到 file
n > file 将文件描述符为 n 的文件重定向到 file
n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file
n >& m 将输出文件 m 和 n 合并
n <& m 将输入文件 m 和 n 合并
<< tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入

将脚本内所有输出重定向到文件

1
2
exec 1>file1 #标准输出
exec 2>file2 #标准错误

文件包含

语法格式如下

1
. filename   # 注意点号(.)和文件名中间有一空格


1
source filename

Donate comment here