现在的位置: 首页 > 综合 > 正文

Linux Shell变量和运算符笔记

2013年08月09日 ⁄ 综合 ⁄ 共 1891字 ⁄ 字号 评论关闭

1、本地变量:
在用户现在的shell声明周期的脚本中使用
$ localtest="test"
$ echo ${localtest}
test
$ readonly localtest
$ locatest="tests"
bash: localtest: 只读变量
$ set
$ readonly

2、环境变量:
用于所有用户进程(经常称为子进程)。登陆进程称为父进程。shell中执行的用户进程均称为子进程。不像本地变量,环境变量可用于所有子进程,这包括编辑器、脚本和应用。
HOME/.profile(etc/profile)
$ export JAVAHOME="/usr/java/bin"
$ export
$ env

变量替换:
用变量的值替换它的名字
在变量名前家$,使用echo命令可以显示单个变量取值
例如:
$ testvar="this is a test"
$ echo ${testvar}
this is a test
替换的几种方式:
${variablename} 显示实际变量值
${variablename:+value} 如果设置了变量值则显示值value,否则为空
${variablename:?value} 如果未设置,则显示用户自定义错误信息value
${variablename:-value} 如果未设置,则显示值value
${variablename:=value} 如果未设置,设置其值,并显示

变量清除:
$ unset testvar
readonly后的变量不能改变也不能清除

3、位置变量
位置变量表示$0,$1,......,$9
向脚本中使用位置参数
$ cat parm.sh
#!/bin/bash
#parm.sh
echo "$0"
echo "$1"
echo "$2"
echo "$3"
echo "$4"
echo "$5"
echo "$6"
echo "$7"
echo "$8"
echo "$9"
$ ./parm.sh A B C D E F
./parm.sh
A
B
C
D
E
F

 

向系统命令传递参数
$ cat parm2.sh
#!/bin/bash
#parm2.sh
find /home/domingo -name $1 -print
$ ./parm2.sh parm.sh
/home/domingo/parm.sh

4、标准变量
bash默认建立了一些标准环境变量,可在/etc/profile中定义
EXINIT
HOME
IFS
LOGNAME
MAIL
MAILCHECK
MAILPATH
TERM
PATH
TZ
PS1
PS2
EDITOR
PWD
SHELL
TERMMINFO
MANPATH

5、特殊变量
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个
$脚本运行当前进程ID号
$!后台运行的最后一个进程的进程ID号
$@使用时加引号,并在引号中返回每个参数
$-显示shell使用的当前选项,与set命令功能相同
$?显示最后命令的退出状态。0表示没有错误,其他任何值表示有错误。

影响变量的命令
declare设置或显示变量
-f只显示函数名
-r创建只读变量(declare和typeset)
-x创建转出变量
-i创建整数变量
使用+代替-,可以颠倒选项的含义

export用于创建传给子shell的变量
--表明选项结束,所有后续参数都是实参
-f表明在"名-值"对中名字是函数名
-n把全局变量转换成局部变量。换句话说,命令的变量不再传递给shell。
-p显示全局变量列表

readonly用于显示或设置只读变量
--表示选项结束
-f创建只读变量

set设置或重设各种shell

shift [n]用于移动位置变量,调整位置变量,使$3的值赋予$2,$2的值赋予$1

typeset用于显示或设置变量,是declare的同义词

unset用于取消变量的定义
--表示选项结束
-f删除只读变量,但不能取消从shell环境中删除指定的变量和参数。如PATH,PS2,PPID,UID等的设置。

引号
使用双引号可以引用除

/之外的任何字符
单引号与双引号类似,可以引用任何字符
反引号用于设置系统命令的输出到变量。
如果一个字符有特殊含义,反斜杠防止shell误解其含义,即屏蔽其特殊含义。
下列字符包含特殊含义:& * + ^ $ ` " | ?

运算符
按位运算~ << >> & | ^
$[]表示形式告诉shell对话框中的表达式求值。如$[2+8]
逻辑运算符&& || > >= < <= == !=
赋值运算符
$ var=9
$ let var+=2
$ echo $var
11

表达式替换
$[]和$(())
习惯使用$[],所有shell的求值都是用整数完成
$[]可以接受不同基数的数字
[ base#n ] n表示基数从2到36的任何基数
$ echo $[ 10#8 +1 ]
9

抱歉!评论已关闭.