Shell学习07:read、echo和printf命令

read

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

实例及参数说明:

# 脚本 test.sh 内容

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

# 执行脚本 test.sh
sh test.sh 
one two three

# 输出

第一个参数:one 第二个参数:two three

read 参数说明:

  • -p 输入提示文字
  • -n 输入字符长度限制(达到6位,自动结束)
  • -t 输入限时
  • -s 隐藏输入内容
    实例:
# 脚本 test.sh 内容

read -p "请输入一段文字:" -n 6 -t 5 -s password
echo -e "\npassword is $password"

# 执行脚本 test.sh
sh test.sh 
请输入一段文字:
123456789
# 输出

password is 123456789

echo

从之前学习的例子看来,echo就是用于字符串的输出,这个字符串可以直接是字符串,也可以是变量。

具体的功能有以下几种:

显示普通字符串
# 这里字符串加不加双引号结果都是一样的

echo "It is a test"
echo It is a test

# 输出: 

It is a test
显示转义字符
echo "\"It is a test\""
echo \"It is a test\" # 双引号也可以省略

# 输出: 

It is a test
显示变量

有两种情况,一种是通过read命令读取用户输入的变量,然后输出;一种是脚本内部的变量,相当于字符串。

# 用户输入变量
#! /bin/sh
read name 
echo "My name is ${name}"

# 执行
sh test.sh
Jerry

# 输出

My name is Jerry
# 脚本内部变量
#! /bin/sh
time=$(date) 
echo "time is ${time}"

# 直接执行脚本并输出:

Sat Jun 29 15:41:38 UTC 2019
显示命令执行结果

以上通过变量获取时间再输出的方式,可以直接把获取时间的命令放在echo中输出:

# 脚本内容
echo `date`

# 输出 
Sat Jun 29 15:41:38 UTC 2019
输出结果到文件中

通常用在写日志里

# 脚本内容
echo "time is `date`" > filename
echo "time is `date`" >> filename
  • 表示将echo的内容写进 filename文件中,若文件中已有内容,先删除后添加

  • 表示将echo 的内容追加到 filename 文件中,不删除文件原有内容

printf

学过C语言的应该都知道C的输出命令最常用的就是printf了,Shell中的printf也差不多,可以给输出的内容指定类型,具体语法如下:

printf  format-string  [arguments...]

- format-string: 为格式控制字符串
- arguments: 为参数列表

举个例子

#! /bin/bash

printf "%-10s %-8s %-4.2f\n" Jerry 男 62.2223

# 输出为:
Jerry     男      62.22

%s %c %d %f都是格式替代符

  • d: Decimal 十进制整数 – 对应位置参数必须是十进制整数
  • s: String 字符串 – 对应位置参数必须是字符串或者字符型
  • c: Char 字符 – 对应位置参数必须是字符串或者字符型
  • f: Float 浮点 – 对应位置参数必须是数字型

例子中的%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来;%-4.2f 指格式化为小数,其中.2指保留2位小数。

更多实例说明:

# 1.格式只指定了一个参数,但多出的参数仍然会按照该格式输出,format-string 被重用
printf "%s %s %s\n" a b c d e f g h i j

# 输出为
a b c
d e f
g h i
j 


# 2.如果没有 arguments,那么 %s 用NULL代替,%d 用 0 代替

printf "%s and %d \n" 

# 输出为
 and 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值