RHCE的练习(13)
面试常考:1、判定输入是否是数字
#(1)grep过滤判断是否是字符串
read -p "请输入:" str
echo $str | egrep'^+$'
[ $? -eq 0 ] && echo "您输入的是字符串" || echo "输入的不是字符串"
#(2)字符串运算 =~ A=~B 子串A是否包含子串B
[[ "$str" =~ * ]] && echo "2您输入的是字符串" || echo "2输入的不是字符串"
#(3)利用通配符,判断指定输入字符是否在字符串中包含
[[ $str = ** ]] && echo 包含字符 ||echo 不包含
#(4)利用case语句
case $str in
**)
echo 是字符串
;;
* )
echo 不是字符串类型
;;
esac
#(5)通过算术运算
expr $str "+" &>/dev/null
[ $? -eq 0 ] && echo 输入的是数字 || echo 输入的是字符
(6)a=1234;echo "$a"|[ -n "`sed -n '/^*$/p'`" ] && echo string a is numbers
if [ -n "$(echo $1| sed -n "/^\+$/p")" ];then
echo "$1 is number."
else
echo 'no.'
fi
# num10=123
# num20=ssss1114ss
# [[ "$num10" =~ ^+$ ]];echo $?
0
# [[ "$num20" =~ ^+$ ]];echo $?
1
2、判定输入的字符是否为整数
## 方法1
a=1234;echo "$a"|[ -n "`sed -n '/^*$/p'`" ] && echo string a is numbers
第一个-n是shell的测试标志,对后面的串"`sed -n '/^*$/p'`" 进行测试,
如果非空,则结果为真。
sed默认会显示所有输入行信息的,sed 的“-n”选项是让sed不要显示,而只显示我们所需要
的内容:即后面的表达式所匹配的行,这是通过表达式中加入“p”命令来实现的。
/^*$/他的含义是匹配至少由一位数字构成的行
## 方法2, 可以,不过不是bash实现的,是使用了grep的正则 -->grep的正则表达式,<<< 就是将后面的内容作为前面命令的标准输入
#if grep '^[[:digit:]]*$' <<< "$1";then
#echo "$1 is number."
#else
#echo 'no.'
#fi
## 方法3
#if [ "$1" -gt 0 ] 2>/dev/null ;then
#echo "$1 is number."
#else
#echo 'no.'
#fi
## 方法4,case
#case "$1" in
#*)
# echo "$1 is number."
# ;;
#*)
# ;;
#esac
## 方法5,awk
#echo $1| awk '{print($0~/^[-]?()+[.]?()+$/)?"number":"string"}'
## 方法6,expr
expr $1 "+" 10 &> /dev/null
if [ $? -eq 0 ];then
echo "$1 is number"
else
echo "$1 not number"
fi
3、如果在/home/pushmail目次下不存在leadtone目次,则创建该目次
path=/home/pushmail/leadtone
[ -d $path ] || mkdir -p $path
或 [ ! -d $path ] && mkdir -p $path
4、判定数字大于500则执行big.sh 小于等于500则退出脚本,并输出报错信息exit
read -p "please input num: " n
[ $n -gt 500 ] && echo "big.sh" || (echo "小于等于500";exit 3) ----()用于复合指令
5、判定当前系统的语言环境,若不是“en_US”时输出提示信息“Not en_US”。
分析:1)如何获取当前系统语言环境--> LANG
lang=$LANG
# echo $lang
zh_CN.utf8
文件:/etc/locale.conf
2)处理字符串
方法1:echo $lang | cut -d. -f1
方法2:echo $lang | awk -F. '{print $1}'
方法3: lang=${LANG%.*} echo $lang
lang=$(echo $LANG | cut -d. -f1)
[ "$lang" = "en_US" ] || echo "Not en.US"
或[ "$lang" != "en_US" ] && echo "Not en.US"
# echo $lang
zh_CN.utf8
6、用Shell编程,判定一文件是不是目次文件,如果是将其拷贝到 /dev 目次下
分析:-c 判断是否是字符设备文件
cp -i
[ $# -ne 1 ] && (echo "no input file...";exit 4)
[ -c "$1" ] && \cp $1 /dev
7、通过ping百度来测试是否能上网
分析:通过命令的返回值来判断ping -i 5 localhost 每隔五秒显示
ping -c 2 www.baidu.com &>/dev/null && echo up || echo down
[ $? -eq 0 ] && echo "net is up..."
8、写一个shell脚本来看看你利用最多的命令是哪些,列出你最常用的命令top10
分析:命令保存文件 /root/.bash_history
# sort /root/.bash_history | uniq -c | sort -nr | head
# history | tr -s" "| cut -d " " -f 3- | sort| uniq -c | sort -rn| head
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]