📁
notes
  • 目录
  • 嵌入式学习路线
  • Linux驱动开发
    • 字符设备驱动开发
    • Linux驱动开发
  • 安卓底层开发
    • 硬件抽象层
      • 安卓硬件驱动
      • 安卓硬件抽象层模块
      • 安卓硬件访问服务
      • 安卓应用
    • 智能指针
    • Logger日志系统
      • Logger日志
      • Logger写接口
      • Logcat
    • binder
      • binder
  • 操作系统
    • 操作系统的运行机制
    • 进程
  • linux一句话
    • 与网络无关的Linux
  • Linux内核0.12
    • 微型计算机组成结构
  • QT
    • 第一个QT
  • ubuntu
    • Linux使用
    • 使用notebook
    • 使用vscode
    • 使用ubuntu
    • Linux运行时格式
    • 配置samba进行win和Linux文件访问
  • shell
    • 自动打包
    • shell 概述
    • 变量
    • 条件测试
    • 控制
  • C
    • 第一条Linux_c输出
  • GTK
    • GTK入门
    • 控制件
    • 事件
    • Glade使用
  • sqlite
    • 数据库概述
    • SQL基础
    • SQLite的C编程
    • SQL语句进阶
  • web
    • CGI通用网关接口
  • 物联网
    • 物联网概述
    • 射频识别技术RFID
  • MySQL
    • MySQL的配置
  • 其他
    • Typora图床
Powered by GitBook
On this page
  • 变量
  • 自定义变量
  • 环境变量
  • 预设变量
  • 脚本变量的特殊用法: "" `` ' () {}

Was this helpful?

  1. shell

变量

Previousshell 概述Next条件测试

Last updated 4 years ago

Was this helpful?

Nnpxmj.png

变量

自定义变量

定义变量

变量名=变量值

num=10

引用变量

$变量名

把变量 num 的值付给变量 i

 i=$num

显示变量

使用 echo 命令可以显示单个变量取值

echo $num

清除变量

使用 unset 命令清除变量

unset varname

变量的其它用法:

从键盘输入一个字符串付给变量 string

read string

定义一个只读变量, 只能在定义时初始化, 以后不能改变, 不能被清除。

readonly var=100

使用 export 说明的变量, 会被导出为环境变量, 其它 shell 均可使用

export var=300

注意: 此时必须使用下面命令 才可以生效

source xxx.sh

注意事项:

变量名只能包含英文字母下划线, 不能以数字开头

# 错误
1_num=10 

# 正确
num_1=20

等号两边不能直接接空格符, 若变量中本身就包含了空格, 则整个字符串都要用双引号、 或单引号括起来;

双引号内的特殊字符可以保有变量特性, 但是单引号内的特殊字符则仅为一般字符。

# 错误
name=aa bb  

# 正确
name="aa bb"  

# 输出: aa bb is me 
echo "$name is me"  

# 输出: $name is me 
echo '$name is me'

栗子 : var.sh

#!/bin/bash

echo "this is the var test shell script "
name="cpucode"

echo "$name is me"
echo '$name is me'
echo "please input a string"

read string
echo "the string of your input is $string"

readonly var=1000

#var=200

export public_var=300

环境变量

shell 在开始执行时就已经定义了一些和系统的工作环境有关的变量, 我们在 shell 中可以直接使用$name 引用

定义:

一般在~/.bashrc 或/etc/profile 文件中(系统自动调用的脚本) 使用 export 设置,

允许用户后来更改 , 一般, 所有环境变量均为大写

 VARNAME=value;

 export VARNAME

显示所有的环境变量

env

清除环境变量

unset

常见环境变量:

保存注册目录的完全路径名

HOME

保存用冒号分隔的目录路径名, shell 将按 PATH 变量中给出的顺序搜索这些目录, 找到的第一个与命令名称一致的可执行文件将被执行。

PATH:
PATH=$HOME/bin:/bin:/usr/bin;

export PATH

主机名

HOSTNAME

默认的 shell 命令解析器

SHELL

此变量保存登录名

LOGNAME

当前工作目录的绝对路径名

PWD

栗子 : export2.sh

#!/bin/bash

echo "You are welcome to use bash"

echo "Current work dirctory is $PWD"
echo "the host name is $HOSTNAME"
echo "your home dir $HOME"
echo "Your shell is $SHELL"

预设变量

传给 shell 脚本参数的数量

$#

传给 shell 脚本参数的内容

$*

运行脚本时传递给其的参数, 用空格隔开

$1、 $2、 $3、 ...、 $9

命令执行后返回的状态

用于检查上一个命令执行是否正确 ( 在 Linux 中, 命令退出状态为 0 表示该命令正确执行, 任何非 0 值表示命令出错)。

$?

当前执行的进程名

`$0`

当前进程的进程号

变量最常见的用途是用作临时文件的名字以保证临时文件不会重复

`$$`

栗子 : $.sh

#!/bin/bash

echo "your shell script name is $0"
echo "the params of your input is $*"

echo "the num of your input params is $#"
echo "the params is $1 $2 $3 $4"

ls
echo "the cmd state is $?"

cd /root

echo "the cmd state is $?"
echo "process id is $$"

脚本变量的特殊用法: "" `` ' () {}

(双引号): 包含的变量会被解释

""

(单引号): 包含的变量会当做字符串解释

''

反引号): 反引号中的内容作为系统命令, 并执行其内容, 可以替换输出为一个变量

``
$ echo "today is `date` "

转义字符:

同 c 语言 \n \t \r \a 等 echo 命令需加-e 转义

\

( 命令序列 ):

由子 shell 来完成, 不影响当前 shell 中的变量

( )

{ 命令序列 }:

在当前 shell 中执行, 会影响当前变量

{ }

栗子 : var_spe.sh

#!/bin/bash

name=teacher

string1="good moring $name"
string2='good moring $name'

echo $string1
echo $string2

echo "today is `date` "
echo 'today is `date` '
echo -e "this \n is\ta\ntest"

( 
    name=student;
    echo "1 $name" 
)

echo 1:$name

{
    name=student; 
    echo "2 $name"; 
}

echo 2:$name
  • @Author: cpu_code

  • @Date: 2020-07-31 10:28:51

  • @LastEditTime: 2020-08-01 14:25:28

  • @FilePath: \notes\shell\variable.md

image-20200801125332281
image-20200801125413452
image-20200801125502921
image-20200801125540280

@Gitee:

@Github:

@CSDN:

@Gitbook:

https://gitee.com/cpu_code
https://github.com/CPU-Code
https://blog.csdn.net/qq_44226094
https://923992029.gitbook.io/cpucode/