一.shell语法
1 shell中printf()的使用
- printf的默认输出没有换行,换行需要自己加“\n”
-
.printf支持格式化输出,要不怎么能叫printf呢
下面通过几个例子来实现printf的"输出"
例1.
printf "%-10sWord\n" Hello
命令行输出:HelloWord
其中“−”表示左对齐“10”表示Hello这个字符占10个字符长度输出“s"表示输出的是字符串String
例2.
printf "%4.2f\n" 5.12345
命令行输出:5.12
"4"还是占4个字符长度“.2”表示输出小数点后的两位“f”表示输出的浮点型数Float
2. shell中echo的使用
echo的三种用法:
echo Hello World !
命令行输出:HelloWorld!echo 'Hello World !'
命令行输出:HelloWorld!echo "Hello World"
命令行输出:HelloWorld
首先第一种打印方法不能打印分号“;”,若分号在句尾,则直接忽略,若不在句尾,则会报错。如下图:
因为分号在shell里被用作命令界定符,标记一个命令的结束。
第二种使用方法的缺陷是:单引号的打印方式也是有缺陷滴。即,打印不了变量。
第三种方法打印不了感叹号“!”
echo的参数
−e:识别输出内容里的转义序列
−n:忽略结尾的换行
使用echo彩色输出
颜色值
文字颜色:
重置=0黑色=30红色=31绿色=32黄色=33蓝色=34洋红=35青色=36白色=37
文字背景颜色:
重置=0黑色=40红色=41绿色=42黄色=43蓝色=44洋红=45青色=46白色=47
例3
echo -e "\e[1;31m Hello Word \e[0m"
echo -e "\e[1;41m Hello Word \e[0m"
命令行输出:
二.用shell实现简单的进度条
#!/bin/bash
i=0
label=('|' '\\' '-' '/')
str=''
while [ $i -le 100 ]
do
let index=i%4
printf "[\e[1;31;1m%-100s\e[0m][%2d%%][%c]\r" "$str" "$i" "${label[$index]}"
str="#"$str
sleep 0.1
let i++
done
echo""
结果图
**用c实现进度条:http://blog.youkuaiyun.com/someday1314/article/details/55657481
**