shell变量的赋值方式有五种:直接联系、从键盘读入赋值、使用命令行参数进行赋值、利用命令的输出结果进行赋值和文件中读入数据赋值。

1.直接赋值 在shell中,第一次使用某个变量名时,实际上就已经给变量赋值了。直接赋值的格式为“变量名=变量值”。 注意 直接赋值时禁止在等号两端添加空格。如下图示一个简单的直接赋值:

2.从键盘读入赋值 从键盘读入赋值的命令格式为:read -p [提示信息]:[变量名] read命令被用来从标准输入读取单行数据。 示例: 结果: 从以上结果可以看出,read命令从标准输入中读取一行,并把输入行的每个字段的值(这里的值是10.9.27.100)赋值给shell变量$ip。 3.使用命令行参数赋值 使用命令行参数赋值是直接在命令后面跟参数,系统用$1来调用第一个参数,使用$2来调用第二个参数。 注意 这种赋值方式适用于参数经常变化且不需要交互的情况。 示例: 结果: 从上可以看出,测试脚本的内容是显示第一个参数$1和第二个参数$2。 4.利用命令的输出结果赋值 在shell程序中,可以将一个命令的输出结果当作变量的值。 注意 在赋值语句中使用反向单引号。 示例: 设置当前日期(格式为2021-03-26)赋值给a变量,也就是说将date + %F命令的输出结果赋值给a,然后用echo $a显示出来。 5.从文件中读入数据赋值 这种方式适用于处理大批量的数据,直接把相应的数据写入文件中。这种方式通常是while循环一行行读入数据,即每循环一次,就从文件中读入一行数据,知道文件的结尾。 示例: 结果: 从以上代码中我们可以看出,文件2.sh的内容通过while循环被读入到脚本中,并且每一行数据都赋值给了execfile,之后用echo显示出来,这里文件的内容读取使用了while的输入从定向。 在shell中,定义或者引用变量应该注意一些问题,如:单引号、双引号、反引号(``)的使用,使用单引号时,不管引号里面是否有变量或者其他表达式,都是原样输出;如果使用双引号,则引号里面的变量或函数会先解析再输出;反引号的作用是命令调用,反引号等价于$()。 使用双引号显示结果,示例: 使用单引号显示结果如下: 使用反引号输出结果如下: 等价于: