read
read 命令用于一个一个词组地接收输入的参数,每个词组需要使用空格进行分隔;如果输入的词组个数大于需要的参数个数,则多出的词组将被作为整体为最后一个参数接收。
实例及参数说明:
1 | # 脚本 test.sh 内容 |
read 参数说明:
- -p 输入提示文字
- -n 输入字符长度限制(达到6位,自动结束)
- -t 输入限时
- -s 隐藏输入内容
实例:
1 | # 脚本 test.sh 内容 |
echo
从之前学习的例子看来,echo就是用于字符串的输出,这个字符串可以直接是字符串,也可以是变量。
具体的功能有以下几种:
显示普通字符串
1 | # 这里字符串加不加双引号结果都是一样的 |
显示转义字符
1 | echo "\"It is a test\"" |
显示变量
有两种情况,一种是通过read命令读取用户输入的变量,然后输出;一种是脚本内部的变量,相当于字符串。
1 | # 用户输入变量 |
1 | # 脚本内部变量 |
显示命令执行结果
以上通过变量获取时间再输出的方式,可以直接把获取时间的命令放在echo中输出:
1 | # 脚本内容 |
输出结果到文件中
通常用在写日志里
1 | # 脚本内容 |
表示将echo的内容写进 filename文件中,若文件中已有内容,先删除后添加
表示将echo 的内容追加到 filename 文件中,不删除文件原有内容
printf
学过C语言的应该都知道C的输出命令最常用的就是printf了,Shell中的printf也差不多,可以给输出的内容指定类型,具体语法如下:
1 | printf format-string [arguments...] |
举个例子
1 | #! /bin/bash |
%s %c %d %f都是格式替代符
- d: Decimal 十进制整数 – 对应位置参数必须是十进制整数
- s: String 字符串 – 对应位置参数必须是字符串或者字符型
- c: Char 字符 – 对应位置参数必须是字符串或者字符型
- f: Float 浮点 – 对应位置参数必须是数字型
例子中的%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来;%-4.2f 指格式化为小数,其中.2指保留2位小数。
更多实例说明:
1 | # 1.格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用 |