1. read
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量。
read name
echo "$nameIt is a test"
2. echo (自动添加换行符)
-e 开启转义
echo -e"OK! \n" #显示换行
echo -e"OK! \c" # -e 开启转义 \c 不换行
显示结果定向至文件
echo"It is a test" > myfile
原样输出字符串,不进行转义或取变量(用单引号)
echo'$name\"' #结果为$name\"
显示命令执行结果
echo `date` #结果为Thu Jul 2410:08:46 CST 2014
3. printf (手动添加\n实现换行)
printf 格式控制字符串 [参数列表]
l 格式控制字符串单引号与双引号效果一样,没有引号也可以输出
l
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
l %s %c %d %f都是格式替代符
l %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
l %-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位的八进制值字符 |
4. test 用于检查某个条件是否成立
字符串、字符和文件运算符与逻辑运算符类似。
if test $[num1] -eq $[num2]
then
echo '两个数相等!'
else
echo '两个数不相等!'
fi
【输入输出重定向】
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 之间的内容作为输入。 |
文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。
Here Document 是 Shell 中的一种特殊的重定向方式,用来将输入重定向到一个交互式 Shell 脚本或程序。
command << delimiter
document
delimiter
l 结尾的delimiter 一定要顶格写,前面不能有任何字符,后面也不能有任何字符,包括空格和 tab 缩进。
/dev/null文件
如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:
$ command > /dev/null
如果屏蔽stdout和stderr,可以写成
$ command > /dev/null 2>&1