Bash中的换行
换行在平常的shell编程中是经常遇到的,但是有时也会忽略掉一些问题。本篇中将会介绍多种方式实现输出换行的方法。
使用 echo
echo 自带换行
echo 命令输出字符串,在最后后会添加一个换行
1  | root@Michael:~# echo hello world  | 
添加 -n 可以禁用echo最后的换行
1  | root@Michael:~# echo -n hello world  | 
换行符”\n”
但是当我们使用bash执行以下命令时,发现它并没有换行
1  | root@Michael:~# bash -c "echo \"\n\""  | 
而是需要加一个 -e
1  | root@Michael:~# bash -c "echo -e \"\n\""  | 
从echo的说明中可以看到 -e 指的是让转义符生效,其中有:
1  | If -e is in effect, the following sequences are recognized:  | 
另外可以在字符串前加 $ 符号
1  | root@Michael:~# echo $'hello\nworld'  | 
使用echo多行模式
上例子
1  | root@Michael:~# echo """hello  | 
使用”””符号,包裹着多行字符串,实现多行输出。
但是这种方式有个问题,即当字符串中存在变量时,会将变量先进行解析,如
1  | echo """hello  | 
而有的时候我们希望是保留原始字符串$hello。这时可以在变量$前加上转义符$
1  | root@Michael:~# echo """hello  | 
也可以使用三个单引号’’’替换三个双引号”””
1  | root@Michael:~# echo '''hello  | 
使用cat命令输出多行
1  | root@Michael:~# cat <<EOF  | 
与echo一样,如果字符串中存在变量,该方式同样会解析变量。这时可以在第一个EOF两边添加引号,如
1  | root@Michael:~# cat <<'EOF'  | 
使用printf
使用printf打印字符串中的\n换行符,单引号,双引号均可
1  | root@Michael:~# printf "hello\nworld\n"  | 
对于变量问题,与echo一样,可以为$添加转义符\$, 或者使用单引号。
如:
1  | root@Michael:~# printf 'hello \n$hello\n'  | 
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Michael Blog!
 评论






