当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-03-18 3:35 

注册: 2009-03-14 20:55
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
正在学习shell方面的知识, :em20 一直在看,但是还是难免会有很多东西不是很理解的透彻,所以不浪费时间,就弱弱的跑出来问问了~! 首先申明,我不是没有认真看阿,是我认真看了之后实在不明白这用法,所以 就那出来找高手帮忙指点迷经,各位高手多多包涵~!
看了 一个 关于 case的用法的,不明白上面说的那个东西怎么套用

case ... in
...) do something here ;;
esac

这个之后,给的例子就更不明白了,
1。首先用法里面 没说case后面跟的变量值确定的情况 怎么执行,
2 。然后那个莫名奇妙的半个括号是必须的么 ?为什么例题里面还要带星号?
3。do后面跟的是这些情况之外的东西还是说 case的变量在in后面的表达式中do后面的东西?
4。那个;; 什么情况下用阿, 什么意思 什么时候单,什么时候双阿?
那最后的esac是什么缩写阿,为了记忆 还是 问下 嘿嘿 :em06

#!/bin/sh

ftype=`file "$1"`
case "$ftype" in
"$1: Zip archive"*)
unzip "$1" ;;
"$1: gzip compressed"*)
gunzip "$1" ;;
"$1: bzip2 compressed"*)
bunzip2 "$1" ;;
*) echo "File $1 can not be uncompressed with smartzip";;
esac


努力学习~! 我会加油的~! :em11

附加问题:在看select的用法,觉得挺好用的,但是有点不明白,select 中in后面的选项个数决定了我选择的范围,但是如果为选择了超出这个范围的选择,怎样让他显示错误然后提示重新选择呢
比如说
#!/bin/sh

echo "What is your favourite OS?"
select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
    break;
done
echo "You have selected $var"
有4个选项,分别对应了1-4,如果我选了5,后面就不会显示了,所以 希望知道 怎样用啦~! :em06 :em01


页首
 用户资料  
 
2 楼 
 文章标题 : Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-03-18 5:18 
头像

注册: 2007-05-27 20:29
帖子: 630
送出感谢: 0 次
接收感谢: 0 次
首先,先了解一下file命令的作用,是判别文件的类型的,命令格式为:
file filename
输出为:
filename: bzip2 compressed data, block size.......

这样就很容易明白这段SCRIPT的意思了。
如果参数是ZIP文件,就使用UNZIP解压,如果是GZIP的话,就用BZIP2解压,如果是其他类型,就不解压,输出提示。

至于esac,请你颠倒过来看一下。

另外,你的问题,尤其是第3条,我看不太明白,可能是我的中文理解力比较差吧。看来不仅要学好数理化,祖国的语言也同样要跟上啊。


页首
 用户资料  
 
3 楼 
 文章标题 : Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-03-18 14:37 
头像

注册: 2009-03-10 22:17
帖子: 91
送出感谢: 0 次
接收感谢: 0 次
这个程序就是 先判断下文件的类型
如果是第一种 的话
解压
第二种 的话
另一种 解压方式
否则 则 ERROR

两个 分号;;表示一个CASE情况的结束
右半扩号这一行表示 CASE的情况~~ : :em11

我也刚学~~~ 加油喽~~


_________________
if u like
just do it


页首
 用户资料  
 
4 楼 
 文章标题 : Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-03-18 14:47 

注册: 2009-03-14 20:55
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
kqueenc 写道:
首先,先了解一下file命令的作用,是判别文件的类型的,命令格式为:
file filename
输出为:
filename: bzip2 compressed data, block size.......

这样就很容易明白这段SCRIPT的意思了。
如果参数是ZIP文件,就使用UNZIP解压,如果是GZIP的话,就用BZIP2解压,如果是其他类型,就不解压,输出提示。

至于esac,请你颠倒过来看一下。

另外,你的问题,尤其是第3条,我看不太明白,可能是我的中文理解力比较差吧。看来不仅要学好数理化,祖国的语言也同样要跟上啊。

thanks~!merci~!谢谢拉~!
可能就是我的表达不好啦~!见谅,呵呵 :em02
看来我要学的还有好多哦! :em20


再弱弱 的问一句哦~! 那个括号前面的星星是啥子意思~!? :em06


页首
 用户资料  
 
5 楼 
 文章标题 : Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-03-18 14:49 

注册: 2009-03-14 20:55
帖子: 3
送出感谢: 0 次
接收感谢: 0 次
city0011 写道:
这个程序就是 先判断下文件的类型
如果是第一种 的话
解压
第二种 的话
另一种 解压方式
否则 则 ERROR

两个 分号;;表示一个CASE情况的结束
右半扩号这一行表示 CASE的情况~~ : :em11

我也刚学~~~ 加油喽~~

共同努力~! :em11
是不是就是说 那个右半括号之前的是case的情况 do后面的是不符合以上情况时做的事情类?~ :em06


页首
 用户资料  
 
6 楼 
 文章标题 : Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-03-18 15:07 
头像

注册: 2009-03-10 22:17
帖子: 91
送出感谢: 0 次
接收感谢: 0 次
mercurysatans 写道:
city0011 写道:
这个程序就是 先判断下文件的类型
如果是第一种 的话
解压
第二种 的话
另一种 解压方式
否则 则 ERROR

两个 分号;;表示一个CASE情况的结束
右半扩号这一行表示 CASE的情况~~ : :em11

我也刚学~~~ 加油喽~~

共同努力~! :em11
是不是就是说 那个右半括号之前的是case的情况 do后面的是不符合以上情况时做的事情类?~ :em06


代码:
  1
  2
  3
  4 #!/bin/sh
  5 echo "What is your favourite OS?"
  6 select var in "Linux" "Gnu Hurd" "Free BSD" "Other"; do
  7 echo "You have selected $var"
  8 break
  9   
 10
 11
 12 done
 13 exit 0
:em11


_________________
if u like
just do it


页首
 用户资料  
 
7 楼 
 文章标题 : Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-04-01 17:13 

注册: 2009-03-06 10:25
帖子: 14
送出感谢: 0 次
接收感谢: 0 次
我运行楼上的程序,为什么出错啊?
What is your favourite OS?
./vim: 4: select: not found
You have selected
./vim: 8: Syntax error: "done" unexpected


页首
 用户资料  
 
8 楼 
 文章标题 : Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-04-01 20:23 

注册: 2009-03-31 22:23
帖子: 18
送出感谢: 0 次
接收感谢: 0 次
我也是,谁能给解决下


页首
 用户资料  
 
9 楼 
 文章标题 : Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
帖子发表于 : 2009-04-01 20:33 

注册: 2008-05-03 23:42
帖子: 3681
送出感谢: 4
接收感谢: 6
select 应该用 #!/bin/bash 的


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译