语法:
echo [-option] 字符串(String)
显示普通字符串
例子:
echo "This is Bunny's test" echo This is Bunny's test
双引号可以省略,实现效果与上方一致
echo的参数:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
显示变量
举例:
在变量名之前加入$
name="BunnyDuudu" echo "$name is best"
进行转义字符测试
echo -e "OK! \c" # -e 开启转义 \c 不换行 echo "It is a test"
result:
OK! It is a test
显示结果定向至文件
把echo的输出写入test文件中
举例:
echo "This is a test" > file echo "This is a test" >> file
>会将文件中的原文字全部替换
>>会在文件原文字后追加,在最后写入
原样输出字符串,不进行转义或取变量(用单引号)
echo 'This is $name'
显示命令执行结果
echo `date`
显示date命令执行后的结果
echo后命令都得加` `反引号,而不是单引号
参照C语言的printf()函数的格式来编写的,所以大部分操作和C语言一致
语法:
printf format-string [arguments…]
参数说明:
printf中的转义字符:
序列 | 说明 |
---|---|
\a | 警告字符 |
\b | 后退一个字符 |
\c | 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略(使换行符号失效) |
\f | 换页 |
\n | 换行 |
\r | 回车 |
\t | 水平字符 |
\\ | \字符 |
举例:
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg printf "%-10s %-8s %-4.2f\n" Alex 男 66.6666 printf "%-10s %-8s %-4.2f\n" Zed 男 31.415926 printf "%-10s %-8s %-4.2f\n" Martha 女 99.812345
%s
代表输入字符串参数
%f
代表输入浮点数参数
%d
代表整型参数
%-10s
(-左对齐,没有则右对齐),指一个宽度为10个字符(一个中文2字符)
-4.2f
表示一个左对齐一个宽度为4个字符且小数点后保留两位小数的浮点数
姓名 性别 体重kg Alex 男 66.12 Zed 男 48.65 Martha 女 47.99
用于检测某个条件是否成立,它可以进行数值、字符、文件三个方面的测试
数值测试:
参数 | 说明 |
---|---|
-eq | 等于则为真 |
-ne | 不等于则为真 |
-gt | 大于则为真 |
-ge | 大于等于则为真 |
-lt | 小于则为真 |
-le | 小于等于则为真 |
语法:if test $[num1] -eq $[num2]
字符串测试:
项目 | Value |
---|---|
= | 等于则为真 |
!= | 不相等则为真 |
-z | 字符串 字符串的长度为零则为真 |
-n | 字符串 字符串的长度不为零则为真 |
语法:if test $num1 = $num2
文件测试
参数 | 说明 |
---|---|
-e 文件名 | 如果文件存在则为真 |
-r 文件名 | 如果文件存在且可读则为真 |
-w 文件名 | 如果文件存在且可写则为真 |
-x 文件名 | 如果文件存在且可执行则为真 |
-s 文件名 | 如果文件存在且至少有一个字符则为真 |
-d 文件名 | 如果文件存在且为目录则为真 |
-f 文件名 | 如果文件存在且为普通文件则为真 |
-c 文件名 | 如果文件存在且为字符型特殊文件则为真 |
-b 文件名 | 如果文件存在且为块特殊文件则为真 |
语法:if test -e ./bash