免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1803 | 回复: 11
打印 上一主题 下一主题

小问题两个 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-08-26 08:16 |只看该作者 |倒序浏览
1)在if和while语句中,如何判断一个字符串中是否有除数字以外的字符
2)在if和while语句中,如何判断read进来的一个路径是否已经存在
大家帮忙解答一下,非常感谢

论坛徽章:
0
2 [报告]
发表于 2005-08-26 08:16 |只看该作者

小问题两个

没人吗?自己顶下先

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
3 [报告]
发表于 2005-08-26 08:30 |只看该作者

小问题两个

echo $var | grep '[^0-9]'
if [ $? -eq 0 ]


2.看不懂

论坛徽章:
0
4 [报告]
发表于 2005-08-26 08:42 |只看该作者

小问题两个

![0-9]

read a
if [ -d $a ]; then

echo "$a"
else
echo "$a不存在"
fi

论坛徽章:
0
5 [报告]
发表于 2005-08-26 18:20 |只看该作者

小问题两个

***echo $var | grep '[^0-9]'
if [ $? -eq 0 ] ***
waker这么做的确可以判断一个变量中是否有非数字以外的字符,但是如果不想通过echo,然后再判断echo的返回值。而是杂if语句中直接判断呢?
第二个问题就是从键盘得到一个输入的路径,比方read -p "input dir" dir
然后如何判断输入的dir是否已经存在,这个mb已经解决了,非常感激

论坛徽章:
0
6 [报告]
发表于 2005-08-27 11:39 |只看该作者

小问题两个

楼主第一个问题是不是想问test条件里有没有直接判断一个字符为数字的字符呢
第2个问题我想问楼主如果你在/home目录下有个叫file的文件,那么你用read读的时候输入/home/file但我记得[ -d file ]是用来判断file是不是目录来为基准的,这个路径存在,但返回结果是1,用 -s file 应该就可以了吧

论坛徽章:
0
7 [报告]
发表于 2005-08-27 11:39 |只看该作者

小问题两个

没人在吗?

论坛徽章:
0
8 [报告]
发表于 2005-08-27 12:29 |只看该作者

小问题两个

不太明白...試答
1) 假設你的參數由命令行輸入,我用 bash3.0 寫 example
[victor@localhost ~]$ cat temp.sh
#! /bin/bash
if (($# <= 0)) ; then
  exit
fi
for i
do
if [[ "$i" =~ '\<[0-9]+\>' ]] ; then
  echo "$i is a number."
  echo "${BASH_REMATCH[@]}"
elif [[ "$i" =~ '\<[A-Za-z]+\>' ]] ; then
  echo "$i is a string"
  echo "${BASH_REMATCH[@]}"
elif [[ "$i" =~ '\<[0-9A-Za-z]+\>' ]] ; then
  echo "Both string and number"
  echo "${BASH_REMATCH[@]}"
else
  echo "$i: others"
fi
done
[victor@localhost ~]$ sh temp.sh
[victor@localhost ~]$
[victor@localhost ~]$ sh temp.sh 123 ty ty123
123 is a number.
123
ty is a string
ty
Both string and number
ty123
[victor@localhost ~]$
[victor@localhost ~]$ sh temp.sh :
:: others
[victor@localhost ~]$
你也可用其它 grep , sed ,awk 的表示法來判斷是什麼。
2) 樓上的版油已給了方法

rgds,
victor

论坛徽章:
0
9 [报告]
发表于 2005-08-27 13:20 |只看该作者

小问题两个

對不起,那個example 有點小錯,不簡潔,更正

#! /bin/bash

if (($# == 0)) ; then
exit
fi
for i
do
if [[ "$i" =~ '\<[0-9]+\>' ]] ; then
echo "$i is a number."
elif [[ "$i" =~ '\<[A-Za-z]+\>' ]] ; then
echo "$i is a string"
elif [[ "$i" =~ '\<[0-9A-Za-z]+\>' ]] ; then
echo "Both string and number"
else
echo "$i: others"
fi
echo "${BASH_REMATCH[@]}"
done

论坛徽章:
0
10 [报告]
发表于 2005-08-29 09:08 |只看该作者

小问题两个

thanks a lot
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP