echo显示一行文字!但是你真以为只有显示一行文字那么简单吗?告诉你一些不为认知的更多echo用法,仅供参考!
1 打印简单字符串
user@user:~$ echo "hello world"
hello world
2 打印特定变量
user@user:~/bin$ var1="hello world"
user@user:~/bin$ echo "$var1"
hello world
user@user:~/bin$ echo '$var1'
$var1
linux中双引号会转义特殊符号,比如以$开头的变量;
而单引号则会默认不识别这些变量;
3 打印转义字符串
\NNN 字符的ASCII代码为NNN(八进制)
\\ 反斜线
\a 报警符(BEL)
\b 退格符
\c 禁止尾随的换行符
\f 换页符
\n 换行符
\r 回车符
\t 水平制表符
\v 纵向制表符
4 各种颜色打印输出
复制如下脚本到文件以后方便使用各种打印;
#!/bin/bash
function LOG_GREEN()
{
echo -e "\033[32m${*}\033[0m"
}
function LOG_YELLOW()
{
echo -e "\033[33m${*}\033[0m"
}
function LOG_RED()
{
echo -e "\033[31m${*}\033[0m"
}
function LOG_BLUE()
{
echo -e "\033[34m${*}\033[0m"
}
function LOG_BLACK()
{
echo -e "\033[30m${*}\033[0m"
}
各种颜色设置参见这个脚本:
#!/bin/bash
cat << haha
You can write like this :
\033[one;two;three m
This is called ansi color.
"echo -e " you can use escapes !
for more infomation ,try "man echo"
haha
#character attributes
a=(normal 0
bold 1
dim 2
italic 3
under 4
blink 5
six 6
revert 7
conceal 8
delete 9
)
#forecolor
b=(
black 30
red 31
green 32
yellow 33
blue 34
magenta 35
cyan 36
white 37
)
#backcolor
c=(
black 40
red 41
green 42
yellow 43
blue 44
magenta 45
cyan 46
white 47
)
function show(){
while test $# -gt 0;do
echo -e "\033[${2}m weidiao\033[0m $1 $2" | column -t
shift 2
done
}
show ${a[*]}
echo ===============fore color ======================
show ${b[*]}
echo ================back color ====================
show ${c[*]}
echo ================random ========================
echo -e "\033[${b[3]};${c[1]}m weidiao is great\033[0m"
5 打印其他命令行执行结果
执行 echo `command` 或者echo $(command)
打印命令行显示结果
特别注意:``这个反单引号不是单引号;
user@user:~/bin$ echo `date`
2019年 07月 30日 星期二 11:15:21 CST
6 进制转换–其他进制转换为十进制
user@user:~/bin$ echo $((2#1010))
10
user@user:~/bin$ echo $((3#12))
5
user@user:~/bin$ echo $((8#11))
9
user@user:~/bin$ echo $((10#11))
11
user@user:~/bin$ echo $((16#11))
17
7 10进制转16进制脚本
#!/usr/bin/env bash
echo "input 十进制: $1"
value=$(echo "obase=16;$1" | bc)
echo "ouput 十六进制: $value"
8 16进制转10进制脚本
#!/usr/bin/env bash
echo " input 16进制: $1"
let i=16#$1
echo "output 10进制: $i"