首页 > 系统相关 >shell编程-踩坑

shell编程-踩坑

时间:2022-10-17 18:22:51浏览次数:44  
标签:femal shell 变量 gender 单引号 编程 空格 字符串

一、单引号和双引号理解

    1. 单引号定义字符串所见即所得,即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。
      • 单引号是全引用,被单引号括起的内容不管是常量还是变量都不会发生替换。
    1. 双引号引用的内容,所见非所得。如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容。
      • 双引号是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容。
    1. 无引号:不使用引号定义字符串时,字符串不能包含空白字符,一般连续的字符串,数字,路径等可以不加引号。如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容。
      • 可见,字符串中包含有空格时不使用引号括起来,将无法正常输出。

总结:字符串常量使用单引号括起来,如果字符串中含有变量、命令等使用双引号括起来,不建议不加引号。

二、空格问题

在Shell中所有的变量默认都是字符串型。而空格是区分字符串的方式,所以,很多时候,一个空格就是一场灾难,具体示例以后写(有点难搞哦...)

1.定义变量时, =号的两边不可以留空格.

2.条件测试语句 [ 符号的两边都要留空格.

eg:
if [ $gender = femal ]; then——-right.
echo “you are femal”;
fi

if[ $gender...-----------------------wrong  #wrong表示错,以下都是
if [$gender...----------------------wrong.

3.条件测试的内容,如果是字符串比较的话, 比较符号两边要留空格!

eg:
if [ $gender = femal ]; then——-right.

if [ $gender= femal ]; then——wrong.
if [ $gender=femal ]; then———wrong.

4.如果if 和 then写在同一行, 那么,注意, then的前面要跟上 ; 号.如果 then 换行写, 那么也没问题.

eg:
if [ $gender = femal ]; then——-right.
if [ $gender = femal ]
then——————————-right.

5.if 后面一定要跟上 then. 同理elif 后面一定要跟上 then.

标签:femal,shell,变量,gender,单引号,编程,空格,字符串
From: https://www.cnblogs.com/nanguyhz/p/16800162.html

相关文章