shell脚本学习第二天——变量定义(含字符串变量定义)

前端之家收集整理的这篇文章主要介绍了shell脚本学习第二天——变量定义(含字符串变量定义)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一、脚本书写规范

脚本打头指明解释器,以及作者,联系方式,以及脚本功能等等。

  1. #!/bin/bash
  2. #Author:yangni
  3. #Mail:497049229@qq.com
  4. #Func:This is ......

循环语句的书写规范:
习惯写法:先函数写出结构,再填充内容

  1. if [ xxx ] #这里[ ]前后都需要有空格,然后在中间填值
  2.  
  3. then
  4.  
  5. fi

所以在脚本书写的时候遇到[]最好先在里面打两个空格,然后在中间写。对于这种循环,首先写好整个循环体,然后再写具体内容,防止出现遗漏情况。


二、变量:

全局变量:环境变量(在shell及其派生子shell中都可以使用)
局部变量:只能在脚本中或者函数中使用。

环境变量:一般为大写,且都是全局变量,用于定义Shell运行环境,保证Shell命令正确执行。

  • 环境变量可以在命令行设置,但是退出用户后值会丢失,因此最好在用户home目录下.bash_profile文件中或者全局配置/etc/profile文件或者/etc/profile.d中定义,这样每次登陆就可以自动初始化了。

环境变量在用户登陆之前已经被/bin/login程序设置好,通常定义并保存在.bash_profile


1、定义变量的几种方法

在/etc/profile最后添加变量定义:
方法一:

export yangni=”i am yangni”

方法二:

  • 变量名=value;
  • export 变量名(需要用export导出)
    可以同时导出多个变量:
    export 变量1 变量2 变量3

方法三:

declare -x 变量名=value


2、字符串变量:

普通字符串变量定义的几种常见形式:

  • 变量名=value
  • 变量名=’value’
  • 变量名=”value”
    一般是字母、数字、下划线,最好字母打头。

实例:

  1. a=192.168.1.2 //直接定义变量内容
  2. b='192.168.1.2' //输出时候单引号变量不解析(看到啥显示啥)
  3. c="192.168.1.2" //输出时会解析变量

我们会看到打印的结果都是一样的。

稍微做下改动:

  1. a=192.168.1.2-$a
  2. b='192.168.1.2-$a' //单引号里面不解析变量
  3. c="192.168.1.2-$a" //双引号解析变量(a的值已经变化了)

我们会发现,单引号里面的 a a会输出它的内容

再举一个简单的实例:

echo ‘`date`’
echo “`date`”

所以一般来说,数字不加引号,其他加双引号。

但是在awk函数双引号和单引号使用正好相反。

3、命令变量的定义:

命令变量定义常见两种方法

  1. 1mydate=`date +%F` #注意,只有date后有空格
  2. 2mydate=$(date +%F)
  3. echo $mydate

然后我们可以用当前时间变量来打包文件

tar zcf myworkspace${mydate}_yangni.tar.gz workspace/


这种情况需要加大括号{},因为这里$无法确定是mydate变量还是
mydate_yangni变量

用机器名打包文件

  1. >myhostname=$(uname -n) //等号前面不能有空格
  2. tar zcf $myhostname.tar.gz 目录名

如果是字符串变量,最好加双引号防止可能出现的错误

$A” 或者”${A}”

猜你在找的Bash相关文章