Shell echo 命令
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
1. 显示普通字符串
echo "你是个傻鸟"
这里的双引号完全可以省略,一下命令与上面实例效果一直:
echo 你是个傻鸟
2. 显示转义字符
echo "\"你是个傻鸟\""
结果将是:
"It is a test"
同样,双引号也可以省略
3.显示变量
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
#!/bin/sh
read name
echo "$name It is a test"
结果你懂得,你行尝试了!!!-_-
4. 显示换行
echo -e "OK! \n" #-e 开启转义
echo "It is a test"
5. 显示不换行
#!/bin/sh
echo -e "OK! \c" # -e 开启转义 \c 不换行
echo "It is a test"
6. 显示结果定向输入至文件
echo "It is a test" > myfile
7. 原样输出字符串,不进行转义或取变量(用单引号)
echo '$name\"'
8.显示命令执行结果
echo `date`
注意: 这里使用的是反引号 `, 而不是单引号 '。
结果将显示当前日期
Thu Jul 24 10:08:46 CST 2014
9.read命令升级版
read -p "请输入一段文字:" -n 6 -t 5 -s password
echo -e "\npassword is $password"
参数说明: -p 输入提示文字 -n 输入字符长度限制(达到6位,自动结束) -t 输入限时 -s 隐藏输入内容
$ sh test.sh
请输入一段文字:
password is asdfgh
Shell printf命令(一般不怎么用)
类似于c程序与里的printf()程序 printf 由 POSIX 标准所定义,因此使用 printf 的脚本比使用 echo 移植性好。
printf 使用引用文本或空格分隔的参数,外面可以在 printf 中使用格式化字符串,还可以制定字符串的宽度、左右对齐方式等。默认 printf 不会像 echo 自动添加换行符,我们可以手动添加 \n。
printf 命令的语法:
printf format-string [arguments...]
参数说明:
format-string: 为格式控制字符串 arguments: 为参数列表
实例如下:
$ echo "Hello, Shell"
Hello, Shell
$ printf "Hello, Shell\n"
Hello, Shell
$
案例
#!/bin/bash
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876
运行结果如下:
姓名 性别 体重kg
郭靖 男 66.12
杨过 男 48.65
郭芙 女 47.99
%s %c %d %f都是格式替代符
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中.2指保留2位小数。
printf 的转义序列
序列 | 说明 |
---|---|
\a | 警告字符,通常为ASCII的BEL字符 |
\b | 后退 |
\c | 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略 |
\f | 换页(formfeed) |
\n | 换行 |
\r | 回车(Carriage return) |
\t | 水平制表符 |
\v | 垂直制表符 |
\ | 一个字面上的反斜杠字符 |
\ddd | 表示1到3位数八进制值的字符。仅在格式字符串中有效 |
\0ddd | 表示1到3位的八进制值字符 |
%d %s %c %f 格式替代符详解:
-
d: Decimal 十进制整数 -- 对应位置参数必须是十进制整数,否则报错!
-
s: String 字符串 -- 对应位置参数必须是字符串或者字符型,否则报错!
-
c: Char 字符 -- 对应位置参数必须是字符串或者字符型,否则报错!
-
f: Float 浮点 -- 对应位置参数必须是数字型,否则报错!
-
如:其中最后一个参数是 "def",%c 自动截取字符串的第一个字符作为结果输出。