shell之变量

变量赋值

变量的赋值有五种:使用read命令,直接赋值,使用命令行参数,使用命令行的输出结果,从文件读取。
1
先说一下从read命令吧:(主要是在需要交互时使用)
Read命令是系统内置命令,语法格式为:
read 变量1
变量2
当Shell脚本执行到read命令时,将暂停脚本的执行并等待键盘的输入,当用户输入完毕并且敲下回车之后,将完成赋值操作,脚本继续执行。
Read指令的规则:
多个数据或变量之间用空格隔开
若变量个数与数据个数相等时,对应取值
若变量个数大于数据个数时,没有输入数据的变量取空值
若变量个数小于数据个数时,将多余的数据赋给最后一个变量(也就是把空格当成字符串处理)

例子:
#!/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”

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

gender=man
3
第三种赋值方法是使用命令行参数赋值。(这种赋值方法是参数需要经常变化,并且不需要交互时使用)
这种赋值方法,也就是直接在命令后面跟参数,然后系统用$1来引用第一个参数。
a="$PWD"
echo
$a

filename=$1
if [ -e "${filename}" ]

4
第四种方法是利用命令的输出结果赋值(这种赋值方法可以直接处理上个命令产生的数据)
在Shell程序中,可以将一个命令的输出结果来当做变量,不过需要在赋值语句中使用反引号
例如currentdir=`pwd`

echo $currentdir
5
最后一种赋值方法是从文件中读入数据
这种方式就适合处理大批量的数据,直接把相应的数据写入文件,然后运行脚本即可。
通常是通过while循环一行行读入数据,即每循环一次,就从文件中读取一行数据,直到读取到文件的结尾。
例如:
#!/bin/bash
ls
*.sh >execfile
while read LINE
do
chmod a+x $LINE
done
<execfile
这个脚本使用了while..do..done 结构,最后一行表示从文件execfile读取数据。while read
LINE表示 每次循环读入一行数据并赋值给变量LINE。

6 变量的输出
最简单的方法就是使用echo
如果想输出格式化的字符串,就需要使用printf,用法和C语言类似
printf
命令的格式说明符
\” 输出双引号
\\ 输出反斜杠
\a 响铃
\n 换行
\r 回车

特殊变量
# vi variable
#!/bin/sh
echo
"number:$#"
echo "scname:$0"
echo "first:$1"
echo "second:$2"
echo
"argume:[email protected]"
echo "show parm list:$*"
echo "show process id:$$"
echo
"show precomm stat:$?"
# chmod +x variable
# ./variable aa
bb
number:2
scname:./variable
first:aa
second:bb
argume:aa
bb
show parm list:aa bb
show process id:24544
show precomm
stat:0
通过显示结果可以看到:
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1
是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
[email protected] 是传给脚本的所有参数的列表
$*
是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
该变量包含了所有输入的命令行参数值。如果您运行showrpm
openssh.rpm w3m.rpm webgrep.rpm
此时 $* 包含了 3 个字符串,即openssh.rpm, w3m.rpm and
webgrep.rpm.
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

shell之变量,布布扣,bubuko.com

时间: 2024-10-27 05:58:47

shell之变量的相关文章

shell编程变量及变量类型

编程语言:包括机器语言.汇编语言.{高级语言[静态语言(编译型语言,一般为强类型变量,需要发布为可执行程序,C.C++.Java,C#)和动态语言(解释型语言,一般为弱类型语言,不需要发布为可执行程序,是一边执行一边解释,Asp,asp.net,php,shell,python.perl)]} 面向对象:解决对象之间的动作,主要适合开发大型程序java,python,c++,perl 面向过程:主要解决过程,主要适合开发小型程序shell,c 变量:是内存空间,是命名的内存空间,存储数据的存储格

shell中变量的使用(2)

shell中变量的几点知识: 变量: 1.在默认情况下,所有的变量都被看做字符串来存储的 2.变量区分大小写 3.在变量名前加$来访问内容 4.不需要声明 5.双引号中允许$扩展(用变量的值替换),单引号不行. 示例: s=hello         #(注意等号两边不能有空格) echo $s 环境变量: shell脚本开始执行时,一些变量会根据环境设置中的值进行初始化,这些变量就是环境变量.习惯大写字母. $HOME 当前用户的家目录 $PATH  以冒号分割的用来搜索命令的目录列表 $0 

笔记-Shell特殊变量

位置变量: $0: 获取当前执行shell的文件名称,如果执行脚本带路径那么就包括脚本路径 $n:  获取当前执行的shell脚本的第ng参数值,n=1..9,当n为0时表示脚本的文件名,如果n大于9,大括号括起来${10}. [[email protected] ~]# vim q.sh                     echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} ${15} 输出的结果 [[email pr

linux学习之shell脚本 ------- 变量

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天来看一下Shell中的一些变量. 变量类型: Shell中有以下几种变量: 1) 本地变量 2) 环境变量 3) 位置变量 4) 标准变量 5) 特殊变量 1) 本地变量 本地变量在用户现在的Shell生命周期的脚本中使用. 用法: variable-name=value set: 可以显示本地所有的变量 注意,本地变量如果加上readonly,则该本地变量不能被修改,

shell自定义变量

一.Shell定义变量需要遵循的规则 Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则: 首个字符必须为字母(a-z,A-Z) 中间不能有空格,可以使用下划线(_) 不能使用标点符号 不能使用bash里的关键字(可用help命令查看保留关键字) 二.shell变量赋值 需要给变量赋值时,可以这么写:   变量名=值 三.shell变量的引用 要取用一个变量的值,只需在变量名前面加一个$ ( 注意: 给变量赋值的时候,不能在"="两边留空格 ).例如:#!/bin/

shell 将变量当命令执行问题【多条命令同时执行问题】

shell将变量当命令执行问题[多条命令同时执行问题] 今天写了个shell脚本,脚本中需要将变量当做shell命令运行,通常的方法有多种,比如: `${var}` 将变量内容当shell命令行执行 $(${var}) 将变量内容当shell命令执行 ${var}将变量内容当shell命令执行[不推荐此种方法] 但是这3种方法只能运行单条命令,当命令是下面类型时就会有问题: VAR1='cd /home ;echo "hello";echo "good"' VAR2

Bash shell和变量详解

本文的结构:bash shell简介-->变量和变量操作.数组-->bash的环境配置文件分析 什么是shell: 操作系统是一组软件,用于控制整个硬件和管理系统活动,若直接使用操作系统,操作不当会导致系统崩溃,用户不可随意操作,所以通过"shell"将我们输入的命令与内核通信,让内核准确的控制硬件工作 shell是在操作系统上开发的应用程序,是用户可操作的最外层,也就是"shell"壳 什么是bash Bourne Again SHell,Bourne

[shell基础]——变量

变量的赋值 #定义变量,注意等号两边没有任何空格 variable=#定义环境变量export variable= #双引号:可含空格.可转义特殊字符 variable=" " #$() 或 反引号:将命令结果赋值给变量 variable=$( ) variable=` ` #将变量值赋值给变量 gg=$aa$bb 变量的取值 #取值$variable #标准写法,建议使用此方法 ${variable} #示例: #DAY=sunday #echo $DAY sunday # echo

Shell函数,Shell数组,变量替换

定义函数 function 函数名 { 函数的功能体 ...... } 函数名(){ 函数的功能体 ...... } 如何调用函数 函数名 函数的使用规则? 1)先定义后调用,可以只定义不调用 2)定义放上面,调用放下面 3)函数名区分大小写 4)函数名相同,后定义的生效 5)函数名不准使用特殊符号和关健字 6)在函数体内定义的变量叫局部变量,只能在当前函数内使用 7)在函数体外定义的变量叫全局变量 8)在第二个函数里敲上第一个函数的函数名,这样可以调用第一个函数的变量 例 #!/bin/bas