如果晚上月亮升起的时候,月光照到我的门口,我希望月光女神能满足我一个愿望,我想要一双人类的手。我想用我的双手把我的爱人紧紧地拥在怀中,哪怕只有一次。如果我从来没有品尝过温暖的感觉,也许我不会这样寒冷;如果我从没有感受过爱情的甜美,我也许就不会这样地痛苦。如果我没有遇到善良的佩格,如果我从来不曾离开过我的房间,我就不会知道我原来是这样的孤独.

linux:shell学习

上一篇 / 下一篇  2012-04-30 08:59:23 / 天气: 晴朗 / 心情: 平静 / 个人分类:linux

1、echo 命令学习
echo  格式输出:
新建 vi myshell.sh文件,写入一下命令:
#!/bin/sh
2pqAN}Q0echo -e "id\tname\tmsg"
%E2{ rPo \*y8\ y S0echo -e "01\tmike\t"\"hello"\""51Testing软件测试网6`C n%FH;e e:s
echo -e "02\tjohn\t"\"hi"\""
输出格式:
id     name     msg
&G+f1u8DrFP001     mike     "hello"51Testing软件测试网yR _NQ|j8up
02     john     "hi"
2、read:读取值并赋予变量,
>>read name 
>>testing
>>echo $name
>>testing
练习:从键盘输入用户名和密码,并打印出来
read.sh脚本:
#!/bin/sh51Testing软件测试网(? CiX(\v0fC&Y G_
echo input your name:
4x-_#\$ee6Qx5W]R!dL0read name51Testing软件测试网q\ ?/OX|p
echo input your password:
CMF&b9C"y:Y%i S0read password
Qh#Kc0K;}RI?0echo -e "name:" $name51Testing软件测试网Z'sI0o!gu:T
echo -e "password:" $password
>>输出
3、cat 管道:显示文件,支持多文件串接后输出,note:完整显示,more分页显示
-v:显示控制字符
-n:对输出进行编号
-b:编号,空白行不编号;
【例子】同时显示三个文件 cat file1 file2 file3
a、统计文件中的空行数:cat file1 file2 |grep ^$ |wc -l
^$:表示的是空行,^:表示行首,$:表示行尾,行首过来就是行尾就表示空行;
b、删除文件中的空行:cat fiile1 file2 |sed /^$/d >file3
c、显示文件中非空行:cat file1 file2 |grep -v ^$|wc -l
4、tee:打印文本并拷贝文本到另一文件
>>date |tee -a file.txt  #将日期数据打印出来并追加到file.txt文件末尾
5、command >>重定向 
>输出 
>>追加输出
<输入
6、crontab任务调度,可自由写脚本设置执行时间和日期自动完成相应操作;
【例子】实现每隔5分钟清除缓存
>vi cleartmp.sh
  #!/bin/sh
  cd /tmp
 rm -rf *>
>vi cronclear
5 * * * * /cleartmp.sh
>crontab cronclear
7、反引号的作用:将反引号的内容作为命令执行
echo `date`
echo "The date today id `date`"
echo `expr 12 \* 12`  #计算12*12的值,使用反斜杠来屏蔽防止shell误解*的作用;
8、环境变量操作
a、设置环境变量: $JAVA_HOME=/usr/java/jdk1.6.0   #设置环境变量的值
                             export $JAVA_HOME  #将环境变量导出
b、环境变量的删除:unset Var_name  #只是从当前用户进程中删除,不会从/etc/profile删除
9、test命令
51Testing软件测试网(SfAI A"O%})I
格式:[-d filename]  # 检查文件是否为目录
      echo $?         #1代表假,0表示真
[-l filename]
echo $?     #检查文件是否为链接
 [-s filename] 
echo $?    #检查文件是否为空
[-s filename -a -w filename ]
echo $?    #检查文件视是否为空并可写,并查看结果
[ "helloi"  =  "HELLO" ]
echo $?  #检查字符是否相等
注意:所有的[]命令都要注意空格,里面的空格;
[ -z  "    "  ]
echo $?       #判断是否为空串
[ $# -ge 3 -a $# -le 6 ]
10、环境变量:/etc/profile  适用于所有用户进程
设置环境变量:export Var_name=velues
查看环境变量:echo $var_name
删除环境变量:unset var_name,#只是从当前用户进程中删除,不会从/etc/profile中删除。
11、本地变量:用户当前的shell进程中使用,定义在$HOME/.bash_profile中

3Yt:EP_MJ0
设置本地变量:ar_name=values
echo $var_name/echo ${var_name}
删除变量:unset var_name
测试变量是否设置,若未设置初始化新值:${var:=new_values}
设置只读变量: readonly  var_name
12、shell程序设计流程
1、test测试命令:测试文件状态
-d:目录,-s:非空,-L:符号文件,-r:文件可读,
-f:正规文件,-w:文件可写,-x:文件可执行;
-a:逻辑与;-o:逻辑或;!:逻辑否
-eq:数值相等;-gt:第一个大于第二个;-ne:数值不相等;-lt:第一个小于第二个;-le:第一个小于等于第二个;-ge:第一个大于等于第二个;
51Testing软件测试网"S9QR:Q!e |0vU/y
13、shell程序控制语句
1、if  then else 语句
【case】
#!/bin/sh
echo "Please input driectory name:"
read DIRECTORY
if [ "`ls -A $DIRECTORY`"="" ]
then 
echo "$DIRECTORY is indeed empty"
else 
echo "$DIRECORY is not empty"        
#检查文件是否为空的脚本。
2、for循环
【格式】
for  变量名  in  列表  #列表可选
do  
    命令1
    命令2
done
【case】
#!/bin/sh
for loop in 1 2 3 4 5
do
echo $loop
done
【case】
#!/bin/sh
C$KzTD/b+E,t0for params in "$*"51Testing软件测试网*s~i!\V+Ec
do51Testing软件测试网_;tp0m te
echo "You supplied $params as a command liine option"51Testing软件测试网ayD] xk
done51Testing软件测试网2hf7v7W$E@9S
echo $params
【case】
#!/bin/sh
counter=0
for files in `ls`
do
counter=` expr $counter + 1`
done
echo "There are $counter files in `pwd` we need to process"
#查看路径,统计文件数量
3、while和until
【格式】
while 命令
do 
     命令1
     命令2
     。。。。
done
#命令只要一个满足就中止,前一命令返回状态0,后面的命令才执行;
until命令
【格式】
until 条件
do 
     命令1
     ......
done
#utiil执行一系列命令,直到条件为真停止。
【case】
#!/bin/sh
_0o5_P g0while read filename
W_1t-s.u0do51Testing软件测试网KOCZNk H7{%O
echo "The info is : $filename"
vbkF3Kf ?0done < tee.txt
# 逐行读取tee.txt文件的内容
14、函数

TAG: shell

 

评分:0

我来说两句

Open Toolbar