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!
评论