shell 语法介绍(中):echo命令、printf命令、重定向、文件包含、函数

一、echo 命令

1. 显示普通字符

echo "It is a test" # 输出 It is a test

2. 显示转义字符

echo "\"It is a test\"" # 输出 "It is a test"

3. 显示变量

read name
echo "I'm ${name}"

     read 命令是一个一个词组地接收输入的参数,每个词组需要使用空格进行分隔;如果输入的词组个数大于需要的参数个数,则多出的词组将被作为整体为最后一个参数接收。
例如:

read firstStr secondStr
echo "第一个参数:$firstStr; 第二个参数:$secondStr"

执行情况:

$ ./test.sh 
一 二 三 四
第一个参数:一; 第二个参数:二 三 四

还有一些参数例如:

  • -p 输入提示文字
  • -n 输入字符长度限制(达到6位,自动结束)
  • -t 输入限时
  • -s 隐藏输入内容

4. 开启转义

    使用 -e 会开启转义,\n 的转义含义就是换行,而 \c 的含义就是不换行。

例如:

echo "换\n行"
echo -e "换\n行"

执行情况:

换\n行
换
行

 

5. 显示结果定向到文件

echo "It is a test" > myfile # 覆盖的形式
echo "It is a test" >> myfile # 附加的形式

6. 显示命令执行结果

    使用反引号 ` 表示命令。
例如:

echo `date`

执行情况:

2018年 07月 20日 星期五 11:22:36 CST

 

二、printf 命令

    类似于 C 语言的 printf()。默认 printf 不会像 echo 那样自动添加换行符,需要我们手动添加 \n

1. 语法

printf format-string [arguments...]

2. 示例

printf "%s\t%s\t%s\n" 姓名 年龄 体重
printf "%s\t%d\t%.2f\n" 张三 20 55.1234

执行情况:

姓名  年龄  体重
张三  20  55.12

3. 更多语法介绍参考 C 语言的 printf() 方法吧

三、输入输出重定向

命令 说明
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. 文件描述符

  • 0:标准输入文件(stdin)
  • 1:标准输出文件(stdout)
  • 2:标准错误文件(stderr)

2. << tag

基本形式为:

command << tag
    content
tag

注意:

  • 结尾的 tag 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和缩进。
  • 开始的 tag 前后的空格会被忽略掉。

示例:

wc -l << EOF
    1
    2
    3
EOF

其中 wc -l 命令可以统计 content 的行数,执行结果为:3。

 

3. dev/null 文件

    如果你希望做一个 “禁止输出” 的效果,可以将输出重定向到 /dev/null,例如

command > /dev/null

    /dev/null 是一个特殊的文件,写入到它的内容都会被丢弃,如果你希望屏蔽 stdout 和 stderr,可以这样写:

command > /dev/null 2>&1

    其中把 $ 放在 > 后面,表示重定向的不是一个文件,而是一个文件描述符。

 

四、文件包含

1. 语法

. filename # 注意点号(.)和文件名中间有一空格
source filename # 这样也可以

2. 示例

    新建两个 shell 脚本,其中 test1.sh 如下:

name="afei"

    然后 test2.sh 引用 test1.sh 并可以使用这个变量:

source test1.sh
echo "name is: ${name}"

    执行 test2.sh 结果如下:

name is afei

五、函数

1. 定义

function_name ()
{
    ....
}
# 或者
function function_name()
{
   ....
}

2. 调用

function_name parm1 parm2

3. 返回值

    可以显示的加 return 返回,如果不加则将最后一条运行结果作为返回,return 后只能跟整数,且数值范围为 0~255。
    使用 $? 获取函数的返回值。

4. 示例

function add()
{
    return $(($1 + $2))
}
 
add 1 2
echo $? # 输出 3

猜你喜欢

转载自blog.csdn.net/afei__/article/details/81132726