嵌入式 shell脚本赋值的5种方法

原创 2013年12月02日 14:56:53
1. Shell中的变量类型

Shell中的变量可以分为环境变量、位置变量、预定义的特殊变量以及用户自定义变量、

2. 环境变量

Shell中的环境变量是一类Shell预定义变量,是用于设置系统运行环境的变量,环境变量由系统统一命名。部分系统变量的值由系统设定,部分环境变量的值可以由用户给定。

环境变量的名称由大写字母组成,常用的Shell环境变量如下所示:

HOME: 用户主目录的全路径名,cd $HOME 即可切换到用户的主目录

PATH: 类似于windows下的路径,Shell会在里面依次寻找二进制的可执行文件。

echo $PATH可以显示当前的PATH,添加新的PATH方法 $PATH=$PATH:新PATH

TERM: 终端类型 echo $TERM

PS1: 提示符,root用户默认为#,普通用户默认为$

SHELL: Shell解释器的绝对路径

LOGNAME: 登录用户的用户名

UID: 当前用户的UID echo $UID

3. 位置变量

位置变量是根据出现在命令行上的参数的位置确定的变量,在调用Shell程序的命令行中,参数的位置定义如下所示。

$命令 参数1 参数2 参数3

其中 $0 对应 执行的命令名

$1 对应 参数1

$2 对应 参数2

$3 对应 参数3

一定要搞清楚顺序!!

4. 预定义的特殊变量

预定义的特殊变量有着特殊的含义,用户不可以更改,所有的预定义变量都由“$”符号和另外一个符号组成,常用的预定义特殊变量如下所示

$#: 位置参数个数(不包括Shell脚本名)

$*: 位置参数组成的字符串

$!: 上一个后台命令对应的进程号

$?: 上一个命令的退出状态,为十进制数字,如果返回为0,则代表执行成功。

$$: 当前的进程号PID

5. 用户自定义变量(大小写敏感

要求: 变量名由字母或者下划线开头,后面跟任意数量的字母、数字、下划线。

合法的:

_name SIZE my_idea

非法的:

2god !name hello&world

6. 变量的创建

有两个内置的命令declare 和 typeset 可用于创建变量。通过命令的选项设置还可以设定变量的创建方。

除了使用内置命令来创建和设置变量外,还可以直接赋值,格式为:

变量名=变量值

注意:变量名前面不应加美元“$”符号。(和PHP不同)

等号“=”前后不可以有空格。

和C语言不同,Shell中不需要显式的语法来声明变量。

变量名不可以直接和其他字符相连,如果想相连,必须用括号:echo “this is $(he)llo!”

7. 变量的删除

系统提供unset命令可以删除变量,例如

unset name

8. 变量的赋值

变量的赋值有五种:使用read命令,直接赋值,使用命令行参数,使用命令行的输出结果,从文件读取。

先说一下从read命令吧:(主要是在需要交互时使用

Read命令是系统内置命令,语法格式为:

read 变量1 变量2

当Shell脚本执行到read命令时,将暂停脚本的执行并等待键盘的输入,当用户输入完毕并且敲下回车之后,将完成赋值操作,脚本继续执行。

Read指令的规则:

l 多个数据或变量之间用空格隔开

l 若变量个数与数据个数相等时,对应取值

l 若变量个数大于数据个数时,没有输入数据的变量取空值

l 若变量个数小于数据个数时,将多余的数据赋给最后一个变量(也就是把空格当成字符串处理)

例子:

#!/bin/bash

echo –n “ please enter your name” //-n 表示用户输入和提示信息在同一行

read name

echo “your name is $name”

#!/bin/bash

echo “Please enter your first name and last name :”

read first last

echo “your first name is $first”

echo “your last name is $last”

第二种赋值方法就是直接给变量赋值(这种赋值方法主要是在不需要交互时,并且参数不需要修改时使用

例如:name=xiaosu

gender=man

第三种赋值方法是使用命令行参数赋值。(这种赋值方法是参数需要经常变化,并且不需要交互时使用

这种赋值方法,也就是直接在命令后面跟参数,然后系统用$1来引用第一个参数。

第四种方法是利用命令的输出结果赋值(这种赋值方法可以直接处理上个命令产生的数据

在Shell程序中,可以将一个命令的输出结果来当做变量,不过需要在赋值语句中使用反引号

例如currentdir=`pwd`

echo $currentdir

最后一种赋值方法是从文件中读入数据

这种方式就适合处理大批量的数据,直接把相应的数据写入文件,然后运行脚本即可。

通常是通过while循环一行行读入数据,即没循环一次,就从文件中读取一行数据,直到读取到文件的结尾。

例如:

#!/bin/bash

ls *.sh >execfile

while read LINE

do

chmod a+x $LINE

done

这个脚本使用了while..do..done 结构,最后一行表示从文件execfile读取数据。while readLINE表示 每次循环读入一行数据并赋值给变量LINE。

9. 变量的输出

最简单的方法就是使用echo

如果想输出格式化的字符串,就需要使用printf,用法和C语言类似

printf 命令的格式说明符

\” 输出双引号

\\ 输出反斜杠

\a 响铃

\n 换行

\r 回车

相关文章推荐

shell脚本赋值的5种方法

1.  Shell中的变量类型 Shell中的变量可以分为环境变量、位置变量、预定义的特殊变量以及用户自定义变量、 2.  环境变量 Shell中的环境变量是一类Shell预定义变量,是用于设置...
  • fyh2003
  • fyh2003
  • 2012年02月21日 12:44
  • 31580

Shell脚本实现动态配置IP与路由:解决嵌入式Android/Linux有线和无线网卡双网共存问题

Shell脚本实现动态配置IP与路由:解决嵌入式Android/Linux有线和无线网卡双网共存问题 网络环境及问题再现 命令行方式实现双网共存 Shell脚本自动实现双网共存(根据网络环境动态配置I...

嵌入式 变量在shell脚本间的传递

实现shell脚本中的变量传递 前几篇文章中已经介绍过局部变量和环境变量的含义,接下来我们来拓展下,看看变量怎样实现在shell脚本 中的传递shell脚本其实是用当前shell的子shell去执行的...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:41
  • 398

嵌入式 shell脚本的特殊符号的意义

shell字符串比较、判断是否为数字         二元比较操作符,比较变量或者比较数字。注意数字与字符串的区别。         整数比较         -eq       等于,如:if [ ...
  • skdkjxy
  • skdkjxy
  • 2013年12月02日 14:40
  • 501

Shell脚本中执行sql语句操作mysql的5种方法

Shell脚本中执行sql语句操作mysql的5种方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-10-31 我要评论 这篇文章主要介绍了Shell脚本中执行s...

shell脚本交互方法

  • 2010年06月17日 22:27
  • 39KB
  • 下载

shell脚本调用java程序方法样例

  • 2017年07月18日 16:59
  • 3KB
  • 下载

嵌入式开发之linux基础第六天学习笔记 shell脚本编程(一)

Linux基础第六天学习笔记   shell脚本编程: 按照发展先后划分: 机器语言 010101 汇编语言 助记符 C语言   高级语言   安装执行类型语言: 编译型语言 解释性语言(脚本) p...

嵌入式开发之linux基础第七天学习笔记 shell脚本编程(二)

linux基础第七天笔记 SHELL脚本编程(二) 语句: 具有特殊功能的语句 输入语句:read 输出语句:echo 控制语句:tput 测试语句:test 表达式     测试表达式的正确与否 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 shell脚本赋值的5种方法
举报原因:
原因补充:

(最多只允许输入30个字)