Shell 脚本-4-输入输出

1. 标准输入

shell 脚本中使用 read 命令读取用户输入. read命令会读取一个输入行, 遇到换行符终止.

1.1 命令格式

  • read [选项] [变量]
  • read 默认读取一行内容, 遇到回车键结束输入
  • 如果不根变量, 默认将读入的内容防止到 REPLY 变量中

1.2 常用选项

  • -p msg: 显示输入提示:
  • -s : 不回显输入内容, 比如输入密码
  • -t : 读取超时时间
  • -r : 支持读取转义字符, 默认输入\n , \t 等转义字符时,会自动将转义符号 去掉.
  • -a 变量名: 读取行按空格分隔, 存入数组中

1.3 示例程序

#!/bin/bash

echo "please input your info"
read -p "username:" username
read -p "password:" -s password
echo ""
read -p "sex(M/W):" -t 5
read -p "books:" -a books
read -p "brief:" -r brief

echo -e "\nyour input:"
echo -e "username:$username"
echo -e "password:$password"
echo -e "sex:$sex"
echo -e "books:${books[*]}"
echo -e "brief:$brief"

** 测试输出:**

[admin@localhost shell]$ ./read.sh
please input your info
username:Z & S
password:
sex(M/W):M
books:java mysql
brief:zhang \n \t san

your input:
username:Z & S
password:123456
sex:M
books:java mysql
brief:zhang
san
[admin@localhost shell]$

2. 标准输出

shell 脚本中提供了两个用户输出的指令:

  • echo: 输出一行字符串, 默认添加换行符
  • printf: 格式化输出字符串, 默认不添加换行符

2.1 echo 指令

echo 指令有三种语法格式:

  • echo "" : 输出字符串, 双引号中支持变量, 转义字符
  • echo '' : 输出字符串, 是什么就是什么, 变量和转义字符都不会转义
  • echo `` : 输出命令执行结果, 反引号内容为命令, 和直接敲命令没什么两样
2.1.1 输出普通字符串
echo "hello,world!"
2.1.2 输出变量

双引号中, 变量引用会自动转换为值, 单引号中不会

name-zhangsan
echo "name:$name"
echo 'name:$name"
2.1.3 开启转义输出

-e 控制是否开启转义字符, 对单引号和双引号都生效

name="zhangsan"
echo -e "name:\t$name"
echo -e 'name:\t$name'
2.1.4 输出原样字符串

输出原样字符需要注意两点:

  • 使用单引号: 不转换变量
  • 不使用-e选项; 不开启转换转义字符功能
name="zhangsan"
echo 'name:$name'
2.1.5 输出不换行

默认一条echo 语句执行完会添加一个换行符,若想不输出换行符, 可以在开启转义功能的前提下末尾添加\c

#!/bin/bash

# 输出普通字符串
echo "hello,world!"

# 输出变量
name="zhangsan"
echo "name:\t$name"

# 开启转义输出
echo -e "name:\t$name"

# 输出字符串原样:
echo -e 'name:\t$name'
# 不换行输出
echo -e "hello,\c"
echo "world!"

echo -e 'hello,\c'
echo 'world!'
2.1.6 示例程序
# 不换行输出
echo -e "hello,\c"
echo "world!"

echo -e 'hello,\c'
echo 'world!'

测试输出:

[admin@localhost shell]$ ./echo.sh
hello,world!
name:\tzhangsan
name: zhangsan
name: $name
hello,world!
hello,world!
[admin@localhost shell]$

2.2 printf 指令

2.2.1 命令格式
  • printf 格式串 参数列表

常用占位符: 有多少个占位符就应该有多少个字符串

  • %ns: 输出字符串, 且字符串长度最短为n个字符,靠右对齐
  • %-ns:输出字符串, 且字符串长度最短为n个字符,靠左对齐
  • %nd: 格式化十进制整数, 长度最短为n个字符, 靠右对齐
  • %-nd: 格式化十进制整数, 长度最短为n个字符, 靠左对齐
  • %m.nf: 输出数字, 整数部分长度最短为m个字符, 小数部分长度最多为n个字符, 四舍五入, 靠右对齐
  • %-m.nf: 输出数字, 整数部分长度最短为m个字符, 小数部分长度最多为n个字符, 四舍五入, 靠左对齐

常用示例:

#!/bin/bash

printf "%-10s%-3s%10s\n" 姓名 年龄 分数
printf "%-10s%-3d%10.1f\n" 张三 18 105.53
printf "%-10s%-3d%10.1f\n" 李四 19 105.54
printf "%-10s%-3d%10.1f\n" 王五 17 10235.55

** 输出结果: **

[admin@localhost shell]$ ./printf.sh
姓名 年龄 分数
张三 18 105.5
李四 19 105.5
王五 17 10235.5
[admin@localhost shell]$

转载于:https://my.oschina.net/zongf/blog/1120337

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值