shell中如何处理换行符的

来源:2-7 对于shell编程中,使用单引号和双引号时趟过的一些坑有哪些

matthew21

2021-11-02

  1. 命令行中需要\续行,shell脚本内部需要吗?
  2. shell需要某个符号作为结尾吗?比如java中的分号,javascript中可用分号可不用
  3. shell 一行命令中途航换行写 shell 如何处理

搞不懂,这里不换行也是正确的

#!/bin/bash

var1=hello  var2="a b c"
echo $var1
echo $var2

这里不换行,第二个echo被当成字符串了

#!/bin/bash

var1=hello  var2="a b c"
echo $var1 echo $var2

所以 shell对于换行和不换行到底是怎么约定的,有没有资料可以看看

写回答

1回答

酷田

2021-11-17

您的第一个问题:脚本中是否需要换行?

答:shell脚本本身就是命令集合,依次执行,那么如何区分一条指令,就是通过回车换行来识别。所以在脚本中换行依然需要使用 \ 字符来告知 shell 下一行内容仍然是一条指令内的。比如我想定义一个SQL字符串变量,需要格式化以便更清晰阅读,可以如下定义

//img.mukewang.com/szimg/61951bb1097b694806520237.jpg

您的第二个问题:正如第一个问题一样,java或其他语言是以分号结束一条语句,shell就是以回车换行作为一个指令结束,或者shell也支持以分号作为一个指令结束的标识,如下图

//img.mukewang.com/szimg/61951c8d09017b7b07830190.jpg

您的第三个问题:看第一个问题即可。


最后回答您的这个问题

#!/bin/bash var1=hello  var2="a b c" echo $var1 echo $var2


这里之所以使用echo输出的时候,变量并没有转换,原因是没有加双引号;echo指令比较特殊,不加双引号,会把后面的搜当成常规字符串输出


这些的确是shell比较误导人的地方,这也是我常说的shell并不像其他高级语言一样,有一些不严谨。

这些也并不一定处处用到,多写脚本就明白了


1
1
matthew21
非常感谢!
2021-11-27
共1条回复

掌握Shell脚本编程 360架构师带你进阶Linux高手

30%知识讲解+70%实例操作 掌握Shell脚本编程能力

1638 学习 · 297 问题

查看课程