shell学习记录---2-1

来源:互联网 发布:程序员联合开发网破解 编辑:程序博客网 时间:2024/05/02 04:26




本地变量,在终端下my=2  记住中间没有空格

[root@localhost ~]# my=2[root@localhost ~]# echo $my2[root@localhost ~]# echo ${my}2[root@localhost ~]# set

set可以查看所有的本地变量.

......USER=rootWINDOWID=41977976XAUTHORITY=/tmp/.gdmHJ6KOWXMODIFIERS=@im=SCIM_=2consoletype=ptymy=2[root@localhost ~]# 


设置为只读:

[root@localhost /]# readonly my[root@localhost /]# my=3bash: my: readonly variable

readonly查看当前的只读变量(也可以加上-p):

[root@localhost /]# readonlydeclare -ar BASH_VERSINFO='([0]="3" [1]="1" [2]="17" [3]="1" [4]="release" [5]="i686-redhat-linux-gnu")'declare -ir EUID="0"declare -ir PPID="5718"declare -r SHELLOPTS="braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor"declare -ir UID="0"declare -r my="2"[root@localhost /]# 

退出终端,set再查看,my本地变量就不存在了.

my在当前的shell生命周期存在,退出就不存在了.



export查看环境变量:

[root@localhost ~]# exportdeclare -x COLORTERM="gnome-terminal"declare -x CVS_RSH="ssh"declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-aElsdOrVta,guid=a4a0b050ac8ca59e98930faf3f6c2d00"declare -x DESKTOP_SESSION="default"declare -x DESKTOP_STARTUP_ID=""declare -x DISPLAY=":0.0"declare -x GDMSESSION="default"......

export设置环境变量,env查看:

[root@localhost ~]# export ni="hello"[root@localhost ~]# envSSH_AGENT_PID=4516ni=helloHOSTNAME=localhost.localdomainDESKTOP_STARTUP_ID=SHELL=/bin/bash......

同样可以设置 readonly ni为只读.


变量替换:



[root@localhost ~]# echo ${ni}hello[root@localhost ~]# 

[root@localhost ~]# echo ${ni:+value}value[root@localhost ~]# echo ${nin:+value}[root@localhost ~]# 

[root@localhost ~]# echo ${nin:?value}bash: nin: value[root@localhost ~]# echo ${ni:?value}hello

[root@localhost ~]# echo ${ni:-value}hello[root@localhost ~]# echo ${nin:-value}value[root@localhost ~]# 

[root@localhost ~]# echo ${ninnn:=valueiii}valueiii

unset取消设置变量:

[root@localhost ~]# echo $nihello[root@localhost ~]# unset ni[root@localhost ~]# echo $ni[root@localhost ~]# 

注意:readonly的变量不能取消.

[root@localhost ~]# export iw="he"[root@localhost ~]# readonly iw[root@localhost ~]# echo ${iw:?undefined}he[root@localhost ~]# unset iwbash: unset: iw: cannot unset: readonly variable[root@localhost ~]# 

位置变量:



脚本文件,名称为myfirstshell:

#!/bin/bash#myfirstshellecho "这是脚本的名称:$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"

执行结果,记得改为可执行:

[root@localhost Exercise]# chmod 777 myfirstshell [root@localhost Exercise]# ./myfirstshell 这是脚本的名称:./myfirstshell这是脚本的第1个参数:这是脚本的第2个参数:这是脚本的第3个参数:这是脚本的第4个参数:这是脚本的第5个参数:这是脚本的第6个参数:这是脚本的第7个参数:这是脚本的第8个参数:这是脚本的第9个参数:[root@localhost Exercise]# ./myfirstshell A B C D E 这是脚本的名称:./myfirstshell这是脚本的第1个参数:A这是脚本的第2个参数:B这是脚本的第3个参数:C这是脚本的第4个参数:D这是脚本的第5个参数:E这是脚本的第6个参数:这是脚本的第7个参数:这是脚本的第8个参数:这是脚本的第9个参数:

传递参数,myshell2.sh文件:

#myshell2find /home/yikai/Exercise/ -name $1 -print

[root@localhost Exercise]# chmod 755 myshell2.sh [root@localhost Exercise]# ls -altotal 24drwxr-xr-x 2 root  root  4096 Nov 25 21:40 .drwx------ 3 yikai yikai 4096 Nov 25 21:21 ..-rw-r--r-- 1 root  root     8 Nov 25 21:38 myfile.c-rwxr-xr-x 1 root  root   429 Nov 25 21:27 myfirstshell-rwxr-xr-x 1 root  root    53 Nov 25 21:40 myshell2.sh[root@localhost Exercise]# chmod 755 myshell2.sh [root@localhost Exercise]# ./myshell2.sh myfile.c/home/yikai/Exercise/myfile.c[root@localhost Exercise]#

标准变量:



[root@localhost Exercise]# echo $HOME/root[root@localhost Exercise]# 


IFS:
[root@localhost Exercise]# IFS=":"[root@localhost Exercise]# echo $PATH/usr/kerberos/sbin /usr/kerberos/bin /usr/local/sbin /usr/local/bin /sbin /bin /usr/sbin /usr/bin /usr/X11R6/bin /root/bin[root@localhost Exercise]# IFS=""[root@localhost Exercise]# echo $PATH/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin


LOGNAME:
[root@localhost Exercise]# echo $LOGNAMEroot

[root@localhost Exercise]# set |grep "LOGNAME"LOGNAME=root[root@localhost Exercise]# set |grep "LOG"LOGNAME=root[root@localhost Exercise]# 


MAIL:
[root@localhost Exercise]# set |grep "MAIL"MAIL=/var/spool/mail/rootMAILCHECK=60


TERM终端类型:
[root@localhost Exercise]# set |grep "TERM"COLORTERM=gnome-terminalTERM=xterm

[root@localhost Exercise]# set |grep "PATH"PATH=/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin

[root@localhost Exercise]# set |grep "PS"GROUPS=()PS1='[\u@\h \W]\$ 'PS2='> 'PS4='+ '[root@localhost Exercise]# set |grep "PS1"PS1='[\u@\h \W]\$ '

[root@localhost ~]# PS1='yikai #'yikai #yikai #yikai #PS1='[\u@\h \W]\$ '[root@localhost ~]# [root@localhost ~]# 

PS2,表示一行上要运行多个命令:

PS2='> '

[root@localhost Exercise]# for loop in "cat myfirstshell"> do> echo $loop> donecat myfirstshell

查看上一条指令:

[root@localhost Exercise]# for loop in "cat myfirstshell"; do echo $loop; done


PWD:

[root@localhost Exercise]# set |grep "PWD"OLDPWD=/rootPROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}"; echo -ne "\007"'PWD=/home/yikai/Exercise[root@localhost Exercise]#