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

本文介绍Bash脚本的书写规范,包括脚本头部信息、循环语句的书写方式,以及变量的定义和使用方法。重点讲解了全局变量与局部变量的区别,环境变量的设置方法,并给出了字符串变量及命令变量的定义实例。

一、脚本书写规范

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

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

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

if [ xxx ]     #这里[  ]前后都需要有空格,然后在中间填值

    then

  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”
    一般是字母、数字、下划线,最好字母打头。

实例:

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

我们会看到打印的结果都是一样的。
这里写图片描述

稍微做下改动:

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

我们会发现,单引号里面的aa会输出它的内容:
这里写图片描述

再举一个简单的实例:

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

这里写图片描述

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

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

3、命令变量的定义:

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

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

这里写图片描述

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

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

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

用机器名打包文件:

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

这里写图片描述

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

“$A” 或者”${A}”

在头歌平台的 Shell 脚本入门中,变量字符串的具体操作是基础且重要的部分。 ### 变量操作 #### 变量定义与赋值 在 Shell 脚本里,变量定义和赋值无需声明变量类型,直接给变量赋值即可。变量一般遵循字母、数字和下划线的组合,且不能以数字开头。 ```bash # 定义一个变量并赋值 name="John" age=25 ``` #### 变量引用 引用变量时,需在变量前加 `$` 符号。 ```bash echo "My name is $name and I'm $age years old." ``` #### 只读变量 使用 `readonly` 命令可将变量设为只读,之后无法再对其进行修改。 ```bash country="China" readonly country # 下面这行代码会报错,因为 country 是只读变量 country="USA" ``` #### 删除变量 使用 `unset` 命令能删除变量。 ```bash city="Beijing" unset city # 此时再引用 city 变量,不会有输出 echo $city ``` ### 字符串操作 #### 字符串定义 字符串可以用单引号或双引号定义。单引号内的字符串会原样输出,双引号内的字符串可以变量引用。 ```bash # 单引号字符串 str1='This is a single-quoted string.' # 双引号字符串 str2="My name is $name." ``` #### 字符串拼接 在 Shell 中,直接将两个字符串相邻放置就能实现拼接。 ```bash first_name="Alice" last_name="Smith" full_name=$first_name$last_name echo $full_name ``` #### 字符串长度 使用 `${#string}` 可获取字符串的长度。 ```bash message="Hello, World!" length=${#message} echo "The length of the string is $length." ``` #### 字符串截取 使用 `${string:start:length}` 可以截取字符串的一部分,`start` 是起始位置,`length` 是截取的长度(可选)。 ```bash text="abcdefg" # 从第 2 个位置开始截取 3 个字符 sub_str=${text:1:3} echo $sub_str ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值