最近在写linux脚本,才开始学习,记录一下学习中遇到的几个问题:
1.关于输出语句echo和printf语句。
echo -e "tiancai1912\t \n"
这样可以输出制表符和换行,但是如果多条语句输出,而且想要统一制表符的宽度的话,感觉echo还是不够好,所以选择了用printf语句。
printf "%-25s" "tiancai1912"
这样就可以统一长度了,多条字符串不同长度都可以统一起来,多余地方用空格填充了。
举例:
echo 样式:
hahahaha ......[true]
xixi ......[true]
printf样式:
hahahaha ......[true]
xixi ......[true]
结论:制表符宽度虽然是固定的,但是随着不同字符串长度,这个宽度可能不像自己想的那样对齐全。
补充一点:prntf中\r转义字符可以使得打印出信息后,光标回到开头位置,这样好处是什么呢,可以做出以下效果
tiancai .....................
然后等待一秒后,出现
tiancai .....................[true]
这样的效果,其实是将这句话打印了两次,但是却在同一行,只是打印第一遍时候光标回到开头,再打印时候,第一句话被覆盖了。
2.关于字符串拼接以及一行输出一个字符串
字符串拼接可以这样写
name=""
name=${name}"tiancai1912 "
这样字符串就链接起来了,如果想把拼接起来的多个字符串一行一行输出的话,我采用的是以下方法:
for temp in $name
do
echo "$temp"
done
这样就可以了。一开始我想用的是在拼接时候加上换行符,但是没有成功,不知道怎么添加,后来就放弃了。
效果:
name=xixi haha hehe tiancai1912
输出:
xixi
hah
hehe
tiancai1912
注意点:1.上面的name=${name}"tiancai1912 空格" 字符串tiancai1912后面有一个空格。
2. for 循环中$name不要加引号,否则输出有问题。
还有好多知识点还没写,比如0 1 2的用法,if 语句判断等等,等有时间再补上吧。