您的位置:首页 > 运维架构 > Shell

Shell基础编程 变量和运算符

2014-03-26 23:11 1136 查看
#变量

#变量:内存中的存储单元,可改变

#本地变量:用户现在的Shell生命期使用

[root@localhost shell]# LOCALTEST="test"

[root@localhost shell]# echo ${LOCALTEST}

test

[root@localhost shell]# echo $LOCALTEST

test

#查看当前Shell的本地变量

set

#设置变量名可读

[root@localhost shell]# readonly LOCALTEST

[root@localhost shell]# LOCALTEST="chinaitlab"

-bash: LOCALTEST: readonly variable

#查看当前只读的本地变量

readonly

readonly -p

#环境变量

#用于所有用户进程

$HOME/.bash_profile(/etc/profile)

#查看环境变量

cat /etc/profile

#设置环境变量

export CHINAITLAB="shenzhen"

#查看环境变量

env

export

#设置只读环境变量

[root@localhost shell]# readonly CHINAITLAB

[root@localhost shell]# export CHINAITLAB="Shenzhen,China"

-bash: CHINAITLAB: readonly variable

#变量替换

[root@localhost shell]# testvar="this is a test"

[root@localhost shell]# echo ${testvar}

this is a test

[root@localhost shell]# echo $testvar

this is a test

[root@localhost shell]# echo ${testvar:+"chinaitlab"}

chinaitlab

[root@localhost shell]# echo ${testvar1:+"chinaitlab"}

[root@localhost shell]# echo ${testvar1:?"no defined"}

-bash: testvar1: no defined

[root@localhost shell]# echo ${testvar1:-"chinaitlab"}

chinaitlab

[root@localhost shell]# echo ${testvar:-"chinaitlab"}

this is a test(设置了显示原来的值)

[root@localhost shell]# echo ${testvar:="chinaitlab"}

this is a test

[root@localhost shell]# echo ${testvar2:="chinaitlab"}

chinaitlab

[root@localhost shell]# echo ${testvar2}

chinaitlab

#变量清除

unset

[root@localhost shell]# echo ${testvar}

this is a test

[root@localhost shell]# unset testvar

[root@localhost shell]# echo ${testvar}

#ReadOnly的值不可清除

[root@localhost shell]# echo ${testvar2}

chinaitlab

[root@localhost shell]# readonly testvar2

[root@localhost shell]# unset testvar2

-bash: unset: testvar2: cannot unset: readonly variable

#位置变量

[root@localhost 0323]# ./param A B C D E F

这是脚本的名称:./param

这是脚本的第1个位置参数:A

这是脚本的第2个位置参数:B

这是脚本的第3个位置参数:C

这是脚本的第4个位置参数:D

这是脚本的第5个位置参数:E

这是脚本的第6个位置参数:F

这是脚本的第7个位置参数:

这是脚本的第8个位置参数:

这是脚本的第9个位置参数:

chmod 755 param.sh

./param.sh myfile.txt

[root@localhost 0323]# cat param.sh

#!/bin/bash

#param.sh

find /home/wgb/shell -name $1 –print

#标准变量

#EXINIT:初始化VI,运行参数

#HOME:主目录

[root@localhost 0323]# echo $HOME

/root

#IFS:字段之间的分隔

[root@localhost 0323]# echo $IFS

[root@localhost 0323]# IFS=':'

[root@localhost 0323]# echo $PATH

/usr/kerberos/sbin /usr/kerberos/bin /usr/java/jdk1.6.0_27/bin /usr/local/sbin /usr/local/bin /sbin /bin /usr/sbin /usr/bin /usr/X11R6/bin /root/bin

[root@localhost 0323]# IFS=''

[root@localhost 0323]# echo $PATH

/usr/kerberos/sbin:/usr/kerberos/bin:/usr/java/jdk1.6.0_27/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

LOGNAME

[root@localhost 0323]# echo $LOGNAME

root

[root@localhost 0323]# set | grep "LOGNAME"

LOGNAME=root

MAIL

[root@localhost 0323]# set | grep "MAIL"

MAIL=/var/spool/mail/root

MAILCHECK=60

#MAILPATH

#TERM

#终端类型

[root@localhost 0323]# set | grep "TERM"

TERM=xterm

#PATH

#可执行文件的路径

set | grep "PATH"

#TZ

#时区

#PS1

#登录系统后的提示符

set | grep "PS"

PS1=”ChinaItlab:”

PS1='[\u@\h \W]\$ '

#PS2

[root@localhost 0323]# for loop in `cat myfile.txt`

> do

> echo $loop

> done

#PWD

#当前目录

[root@localhost 0323]# pwd

/home/wgb/shell/0323

set | grep "PWD"

#SHELL

#当前运行的Shell是哪个

#MANPATH

#查看帮助文件的路径

#TERMINFO

#终端类型的配置信息

#特殊变量

./param A CHINA chinaitlab

[root@localhost 0323]# cat param

#!/bin/bash

#param

echo "这是脚本的名称:$0"

echo "这是脚本的第1个位置参数:$1"

echo "这是脚本的第2个位置参数:$2"

echo "这是脚本的第3个位置参数:$3"

echo "这是脚本的第4个位置参数:$4"

echo "这是脚本的第5个位置参数:$5"

echo "这是脚本的第6个位置参数:$6"

echo "这是脚本的第7个位置参数:$7"

echo "这是脚本的第8个位置参数:$8"

echo "这是脚本的第9个位置参数:$9"

echo "这是参数个数:$#"

echo "显示脚本全部参数:$*"

echo "显示进程ID:$$"

echo "显示前一命令运行后状态:$?"

#影响变量的命令

#declare

export

readonly

#export

export –p

export country=”china”

#readonly

#shift

#typeset

#unset

#引号

#显示所有文件名

echo ert *

[root@localhost 0323]# echo ert *

ert do echo myfile.txt param param.sh

#双引号

[root@localhost 0323]# echo "ert *"

ert *

[root@localhost 0323]# echo -e "ert, $SHELL `\n* china`echo itlab` "

#单引号

[root@localhost 0323]# echo 'ert, $SHELL `\n* china`echo itlab` '

ert, $SHELL `\n* china`echo itlab`

#反引号

[root@localhost 0323]# echo "* china`echo itlab`"

* chinaitlab

#反斜杠

[root@localhost 0323]# echo *

do echo myfile.txt param param.sh

[root@localhost 0323]# echo \*

*

#运算符

[root@localhost 0323]# echo $[ 2+ 8]

10

[root@localhost 0323]# echo $[ 2+8 ]

10

[root@localhost 0323]# echo $[ 2>>8 ]

0

[root@localhost 0323]# echo $[ 2<<4 ]

32

[root@localhost 0323]# echo $[ 2^4 ]

6

[root@localhost 0323]# echo $[ ~3 ]

-4

[root@localhost 0323]# echo $[ 2&&2 ]

1

[root@localhost 0323]# echo $[ 2&&0 ]

0

[root@localhost 0323]# echo $[ 1||0 ]

1

[root@localhost 0323]# echo $[ 0||0 ]

0

#赋值

[root@localhost 0323]# var=65

[root@localhost 0323]# let var+=4

[root@localhost 0323]# echo $var

69

#表达式替换

[root@localhost 0323]# echo $[ 10#8 + 1 ]

9
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell