收藏 分销(赏)

Shell编程学习变量加引用函数.doc

上传人:xrp****65 文档编号:7684059 上传时间:2025-01-12 格式:DOC 页数:5 大小:35KB 下载积分:10 金币
下载 相关 举报
Shell编程学习变量加引用函数.doc_第1页
第1页 / 共5页
Shell编程学习变量加引用函数.doc_第2页
第2页 / 共5页


点击查看更多>>
资源描述
一、Shell变量 主要有本地变量和环境变量。         1、本地变量  -- 在用户现有运行的脚本中使用               1) 定义本地变量      格式: variable-name=value                   例子:[root@jike1 /root]# LOCALTEST="test"                             [root@jike1 /root]# echo $LOCALTEST            (注意:echo $LOCALTEST 和 echo ${LOCALTEST}的效果是一样的)                   (在变量名前加$, 可以取得此变量的值,使用echo命令可以显示变量的值)               2) 显示本地变量      格式: set                    例子:[root@chinaitlab root]# set               3) 清除本地变量     格式:unset  variable-name                    例如:[root@jike1 /root]# unset LOCALTEST                   此时再执行echo $LOCALTEST将看不到变量LOCALTEST的输出。                                     2、环境变量 -- 在所有的子进程中使用               1) 定义环境变量     格式: export  variable-name=value (与本地变量的定义相比,多了一个export关键字)                   例子:[root@chinaitlab /root]# export DOMAIN=""                                [root@ chinaitlab shell]# vi testenv.sh                                 #!/bin/bash                        #表示用bash来解析脚本                                 #testenv.sh                                 echo $DOMAIN                               [root@chinaitlab shell]# chmod +x testenv.sh                               [root@chinaitlab shell]# ./testenv.sh                                                  2) 显示环境变量     格式: env     (本地变量的显示使用set,环境变量的显示使用env)                     例子: [root@chinaitlab test]# env                 3) 清除环境变量     格式:unset  variable-name     (用法与本地变量相同,都使用unset)                     例子: [root@chinaitlab shell]# unset DOMAIN                     此时再执行./testenv.sh将看不到变量DOMAIN的输出。            3、其它变量               1) 位置变量     $0,$1,$2,$3……$9               2) 只读变量  readonly variable                    注意:只读变量不能被清除和改变其值,所以要谨慎使用。               3) 特殊变量     $#,$?,$$(表示当前进程的PID)…… 二、运算符和表达式                  1、运算符是对计算机发的指令,运算符类型有:                 算术运算符(+、-、*、/)                 按位运算符(~、<<、>>、&、|、^)                 逻辑运算符(&&、||、 > 、= = 、<、! =)                 赋值运算符(=、+=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=)                  2、表达式是运算符和运算对象的组合体。                 1) $[]:可以接受不同基数的数字的表达式                     echo $[10+1]                            (输出:11)                     echo "$[2+3],$HOME"            (输出:5,/root)                     echo $[2<<3],$[8>>1]            (输出:16,4)                         echo $[2>3],$[3>2]                (输出:0,1 表达式为false时输出0,为true时输出1)                 2) 字符表达式:直接书写,采用单引号,双引号引起来。                     echo " $HOME,That is your root directory."     (输出:/root,That is your root directory.)                     echo ' $HOME,That is your root directory. '     (输出:$HOME,That is your root directory.)                     单引号和双引号的区别在于:单引号是原样显示,双引号则显示出变量的值。                 3) test表达式 三、控制结构         1、if语句               例:  #!/bin/bash                       #if.sh                       if [ "10" -lt "12" ]            #注意:if和[之间,[和"10"之间,"12"和]都有空格,如果不加空格,会出现语法错误                       then                       echo "Yes,10 is less than 12"                       fi          2、case语句               例:  #!/bin/bash                       #case.sh                       echo -n "Enter a start or stop:"                       read ANS                       case $ANS in                       start)                            echo "You select start"                            ;;                       stop)                            echo "You select stop"                            ;;                       *)                            echo "`basename $0`: You select is not between start and stop" >&2                                        #注意:>和&2之间没有空格,>&2 表示将显示输出到标准输出(一般是屏幕)上                            exit;                            ;;                       esac         3、for循环语句               格式:   for 变量名 in 列表                           do                               命令1                               命令2                               ... ...                           done         4、until循环语句               格式:   until 条件                           do                               命令1                               命令2                               ... ...                           done         5、while循环语句               格式:   while 命令                            do                                命令1                            break                                命令2                            continue                                命令3                                ... ...                           done  四、输入输出         1、几个重要的工具               1) echo                   例:echo -n "Enter a number from 1 to 2:"    (-n 表示不换行,此时光标停留在行尾)               2) read                   例:read ANS     (表示将用户的输入存放到变量ANS中)               3) cat    (显示文件内容)               4) 管道( | )    (一个程序的输出作为另一个程序的输入)                   例:ls -l | grep "d"               5) 文件重定向( >和>> )                   例:ls -l > /tmp/a.txt    (将输出的结果重写到a.txt这个文件中)                         ls -l >> /tmp/a.txt   (将输出的结果追加到a.txt这个文件中,常用于记录日志)               6) 标准输入( $0 )、标准输出( $1 )和标准错误( $2 )                   采用文件描述符($0、$1、$2)来定义。         2、实例:readme.sh                 #!/bin/bash                 #readname.sh                 echo -n "First Name: "                 read firstname                 echo -n "Last Name: "                 read lastname subname                 echo -e "Your First Name is :${firstname}\n "             #加了-e表示将\n解析为转义字符                 echo -e "Your Last Name is :${lastname}\n "                 echo -e "Your Subname is :${subname}\n "                 echo "Your First Name is :${firstname}\n " >>firstname.txt        #这行没加-e,因此在输出中会原样显示\n                 echo  "Your Last Name is :${lastname}\n " >lastname.txt                 echo  "Your Subname is :${subname}\n " >&1 五、文本过滤         1、正则表达式    (就是模式匹配)         2、find    (查找文件)               例:find ./ -name "*.txt" -print         3、grep    (查找字符)               例:grep "[5-8][6-9][0-3]" access_log         4、awk    (把一系列数据分域,即分成列)               例:awk '{print $1"\t"$4}' access_log         5、sed    (对数据进行查找和替换)               例:sed  -n 's/chinaitlab/hello/p' myfile.txt    (将myfile.txt文件中的chinaitlab替换成hello,并打印到屏幕上来,s表示替换,p表示打印。如果加上重定向符就可以将替换后的内容输出到一个文件中去。)         6、sort    (排序)               例:sort ip.txt         7、uniq    (显示这一列是唯一的还是不唯一的,可以唯一化)               例:uniq ip.txt         8、split    (可以对文件进行分割)               例:split myfile.txt         9、实例:kill_process.sh                 #!/bin/bash                 #kill_process.sh                 current_PID=$$                 ps -aux|grep "/usr/sbin/sshd"|grep -v "grep"|awk '{print $2}'>/tmp/${current_PID}.txt                 for pid in `cat /tmp/${current_PID}.txt`                 do                 {                      echo "kill -9 $pid"                      kill -9 $pid                 }                 done                 rm -f /tmp/${current_PID}.txt 六、Shell函数         1、定义函数有两种格式,分别为:                 函数名()                 {                       命令1                       ... ...                  }                 function 函数名()                 {                       ... ...                  }         2、实例:func.sh                 #!/bin/bash                 #func.sh                  # Source function library.            # /etc/rc.d/init.d/functions中存放了大量已经写好的函数                 . /etc/rc.d/init.d/functions            # 引入/etc/rc.d/init.d/functions中的函数,相当于其它语言中的include                 function hello ()                 {                   echo "Hello,$1 today is `date`"                 }                  echo "now going to the function hello"                  hello chinaitlab                 echo "back from the function"
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服