Shell中一些具体问题及范例

Shell中的特殊符号
1.注释符“#”
除了#!/bin/sh中的#
2.$:使其后的普通字符作为变量名
变量字符长度超过1个时,用{}括起来
3.单引号:被引起的字符全部做普通字符,即全部原样
4.双引号:引号内的内容,除$,转义符\,倒引号`这三个保留特殊功能,其它字符均作普通字符
5.倒引号`:引号内的字符串当作shell命令行解释执行,得到的结果取代整个倒引号括起来的部分
`pwd` 即pwd命令的执行结果
6.反斜线\:转义字符.可以把特殊字符变成普通字符
在某个字符前面利用\能够阻止shell把后面的字符解释为特殊字符




关于shell中变量
赋值:变量名=值  等号两边不可有空格.可以用大小写字母.区分大小写
                 取值包括空格,必须用双引号括起来
变量的引用:$变量名或${变量名}
清除变量 unset 变量名
例:echo ${name}
unset name (注:name前没有$)
显示本地所有变量 set
设置只读变量:变量名=xxx
readonly 变量名


变量表达式
1.命令替换
(1)在某个命令行中使用多个命令的一个方法是通过命令替换
例 echo"The date is `date`"
(2)expr 命令:用于求值算数表达式
例 expr 4+5   输出9
(3)可以在$((...))中包括一个表达式
test n1 -参数 n2        真返回0 假返回1
参数:
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于
-eq 等于
-ne 不等于
test语句的等价形式[1 -lt 4]=test 1 -lt 4
3.文件测试
-f 存在且是普通文件
-d 存在且是目录
-s 存在且字节数大于0
-r 存在且可读
-w 存在且可写
-x 存在且可执行
4.字符串测试
test -z s   字符串长度为0 则为真
test -n s   字符串长度不为0 则为真
5.其它参数:-a 并且
            -o 或者








case语句范例:
#!/bin/bash
read key 
case  "${key}"in
 [A-Z] ) echo "UpperLetter";;
 [a-z] ) echo "LowerLetter";;
 [0-9] ) echo "Number";;
 *     ) echo "Unkown";;
esac


(read 变量1 [变量2...]
可以从键盘上读取多个变量的值,用户输入数据时,以空格或者Tab键作为分隔


判断存在文件/目录
#!/bin/bash
DIR="/home/Shell"
FILE="/home/Shell/ab.c"
if [ -d ${DIR} ]; then
echo ${DIR}
fi
if [ -f ${FILE} ]; then
echo ${FILE}
fi


或者#!/bin/bash
fname=/bin/date
if(test -f "$fname") then
echo "exist"
fi




while语句  -求1-100的和
i=1
sum=0
while[ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum




编写一个名为greet的问候程序,执行时能根据系统当前的时间向用户输出问候信息
#! /bin/sh -
hour=`date|cut -c 19-20`
if test $hour -ge 0 -a $hour -lt 12; then
echo "Good morning!"
elif test $hour -ge 12 -a $hour -lr 18; then
echo "Good afternoon!"
else
echo "Good evening!"
fi
说明:用cut命令从date命令的输出中切割出小时信息
-c x-y 表示切割x-y列






编写一个名为chname的程序,将当前目录下所有的.txt 文件更名为.doc 文件
 #! /bin/sh -
for file in *.txt
do
  leftname=`basename $file .txt`
  mv $file $leftname.doc
done






编写一个名为chuser的程序,执行中每隔5分钟检查指定的用户是否登录系统,用户名从命令行输入;如果指定的用户已经登录,则显示相关信息。 
#! /bin/sh –
 if test $# -ne 1
 then
   echo "Usage: chuser username"
 else
   user="$1"
   until who | grep "$user"
   do
    sleep 300
   done
   echo "$user has logged on!"
 fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值