IT评测·应用市场-qidao123.com技术社区

标题: RHCE的练习(13) [打印本页]

作者: 用户云卷云舒    时间: 2024-11-19 13:01
标题: RHCE的练习(13)
面试常考:

1、判定输入是否是数字

  1. #(1)grep过滤判断是否是字符串
  2. read -p "请输入:" str
  3. echo $str | egrep  '^[a-zA-Z]+$'
  4. [ $? -eq 0 ] && echo "您输入的是字符串" || echo "输入的不是字符串"
  5. #(2)字符串运算 =~   A=~B 子串A是否包含子串B
  6. [[ "$str" =~ [a-zA-Z]* ]] && echo "2您输入的是字符串" || echo "2输入的不是字符串"
  7. #(3)利用通配符,判断指定输入字符是否在字符串中包含
  8. [[ $str = *[a-zA-Z]* ]] && echo 包含字符 ||echo 不包含
  9. #(4)利用case语句
  10. case $str in
  11.         *[a-zA-Z]*)
  12.         echo 是字符串
  13.         ;;
  14.         * )
  15.         echo 不是字符串类型
  16.         ;;
  17. esac
  18. #(5)通过算术运算
  19. expr $str "+" &>/dev/null
  20. [ $? -eq 0 ] && echo 输入的是数字 || echo 输入的是字符
  21. (6)a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] && echo string a is numbers
  22. if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ];then
  23.     echo "$1 is number."
  24. else
  25.     echo 'no.'
  26. fi
  27. [root@localhost ~]# num10=123
  28. [root@localhost ~]# num20=ssss1114ss
  29. [root@localhost ~]# [[ "$num10" =~ ^[0-9]+$ ]];echo $?
  30. 0
  31. [root@localhost ~]# [[ "$num20" =~ ^[0-9]+$ ]];echo $?
  32. 1
复制代码

2、判定输入的字符是否为整数

  1. ## 方法1
  2.                 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9]*$/p'`" ] && echo string a is numbers
  3.                   第一个-n是shell的测试标志,对后面的串"`sed -n '/^[0-9][0-9]*$/p'`" 进行测试,
  4.            如果非空,则结果为真。
  5.                    sed默认会显示所有输入行信息的,sed 的“-n”选项是让sed不要显示,而只显示我们所需要
  6.            的内容:即后面的表达式所匹配的行,这是通过表达式中加入“p”命令来实现的。
  7.                   /^[0-9][0-9]*$/他的含义是匹配至少由一位数字构成的行
  8.                        
  9. ## 方法2, 可以,不过不是bash实现的,是使用了grep的正则 -->grep的正则表达式,<<< 就是将后面的内容作为前面命令的标准输入
  10.                 #if grep '^[[:digit:]]*$' <<< "$1";then
  11.                 #  echo "$1 is number."
  12.                 #else
  13.                 #  echo 'no.'
  14.                 #fi        
  15. ## 方法3
  16.                 #if [ "$1" -gt 0 ] 2>/dev/null ;then
  17.                 #  echo "$1 is number."
  18.                 #else
  19.                 #  echo 'no.'
  20.                 #fi
  21. ## 方法4,case
  22.                 #case "$1" in
  23.                 #  [1-9][0-9]*)  
  24.                 #    echo "$1 is number."
  25.                 #    ;;
  26.                 #  *)  
  27.                 #    ;;
  28.                 #esac
  29. ## 方法5,awk
  30.                 #echo $1| awk '{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"number":"string"}'
  31.                
  32. ## 方法6,expr
  33.                 expr $1 "+" 10 &> /dev/null
  34.                 if [ $? -eq 0 ];then
  35.                   echo "$1 is number"
  36.                 else
  37.                   echo "$1 not number"
  38.                 fi  
复制代码

3、如果在/home/pushmail目次下不存在leadtone目次,则创建该目次

  1.     path=/home/pushmail/leadtone
  2.     [ -d $path ] || mkdir -p $path
  3.     或 [ ! -d $path ] && mkdir -p $path
复制代码

    
4、判定数字大于500则执行big.sh 小于等于500则退出脚本,并输出报错信息exit 


  1. read -p "please input num: " n
  2. [ $n -gt 500 ] && echo "big.sh" || (echo "小于等于500";exit 3)  ----()用于复合指令
复制代码


5、判定当前系统的语言环境,若不是“en_US”时输出提示信息“Not en_US”。

  1.     分析:1)如何获取当前系统语言环境--> LANG
  2.             lang=$LANG
  3.             # echo $lang
  4.             zh_CN.utf8
  5.             文件:/etc/locale.conf
  6.         2)处理字符串
  7.       方法1:echo $lang | cut -d. -f1
  8.       方法2:echo $lang | awk -F. '{print $1}'
  9.       方法3: lang=${LANG%.*} echo $lang
  10.       lang=$(echo $LANG | cut -d. -f1)
  11.       [ "$lang" = "en_US" ] || echo "Not en.US"
  12.       或[ "$lang" != "en_US" ] && echo "Not en.US"
  13.       # echo $lang
  14.       zh_CN.utf8    
复制代码

6、用Shell编程,判定一文件是不是目次文件,如果是将其拷贝到 /dev 目次下


  1. ​    分析:-c 判断是否是字符设备文件
  2. cp -i
  3. ​    [ $# -ne 1 ] && (echo "no input file...";exit 4)
  4. ​    [ -c "$1" ] && \cp $1 /dev
复制代码

7、通过ping百度来测试是否能上网


  1. 分析:通过命令的返回值来判断ping -i 5 localhost 每隔五秒显示
  2.     ping -c 2  www.baidu.com &>/dev/null   &&  echo  up || echo down
  3.     [ $? -eq 0 ] && echo "net is up..."
复制代码

8、写一个shell脚本来看看你利用最多的命令是哪些,列出你最常用的命令top10

  1. 分析:命令保存文件 /root/.bash_history
  2.         # sort /root/.bash_history | uniq -c | sort -nr | head
  3.         [root@localhost 桌面]# history | tr -s  " "| cut -d " " -f 3- | sort  | uniq -c | sort -rn  | head
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4