正在学习shell方面的知识, 一直在看,但是还是难免会有很多东西不是很理解的透彻,所以不浪费时间,就弱弱的跑出来问问了~! 首先申明,我不是没有认真看阿,是我认真看了之后实在不明白这用法,所以 就那出来找高手帮忙指点迷经,各位高手多多包涵~!
看了 一个 关于 case的用法的,不明白上面说的那个东西怎么套用
case ... in
...) do something here ;;
esac
这个之后,给的例子就更不明白了,
1。首先用法里面 没说case后面跟的变量值确定的情况 怎么执行,
2 。然后那个莫名奇妙的半个括号是必须的么 ?为什么例题里面还要带星号?
3。do后面跟的是这些情况之外的东西还是说 case的变量在in后面的表达式中do后面的东西?
4。那个;; 什么情况下用阿, 什么意思 什么时候单,什么时候双阿?
那最后的esac是什么缩写阿,为了记忆 还是 问下 嘿嘿
#!/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
努力学习~! 我会加油的~!
附加问题:在看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,后面就不会显示了,所以 希望知道 怎样用啦~!
(新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
-
- 帖子: 3
- 注册时间: 2009-03-14 20:55
- kqueenc
- 帖子: 630
- 注册时间: 2007-05-27 20:29
Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
首先,先了解一下file命令的作用,是判别文件的类型的,命令格式为:
file filename
输出为:
filename: bzip2 compressed data, block size.......
这样就很容易明白这段SCRIPT的意思了。
如果参数是ZIP文件,就使用UNZIP解压,如果是GZIP的话,就用BZIP2解压,如果是其他类型,就不解压,输出提示。
至于esac,请你颠倒过来看一下。
另外,你的问题,尤其是第3条,我看不太明白,可能是我的中文理解力比较差吧。看来不仅要学好数理化,祖国的语言也同样要跟上啊。
file filename
输出为:
filename: bzip2 compressed data, block size.......
这样就很容易明白这段SCRIPT的意思了。
如果参数是ZIP文件,就使用UNZIP解压,如果是GZIP的话,就用BZIP2解压,如果是其他类型,就不解压,输出提示。
至于esac,请你颠倒过来看一下。
另外,你的问题,尤其是第3条,我看不太明白,可能是我的中文理解力比较差吧。看来不仅要学好数理化,祖国的语言也同样要跟上啊。
- city0011
- 帖子: 91
- 注册时间: 2009-03-10 22:17
- 联系:
Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
这个程序就是 先判断下文件的类型
如果是第一种 的话
解压
第二种 的话
另一种 解压方式
否则 则 ERROR
两个 分号;;表示一个CASE情况的结束
右半扩号这一行表示 CASE的情况~~ :
我也刚学~~~ 加油喽~~
如果是第一种 的话
解压
第二种 的话
另一种 解压方式
否则 则 ERROR
两个 分号;;表示一个CASE情况的结束
右半扩号这一行表示 CASE的情况~~ :
我也刚学~~~ 加油喽~~
if u like
just do it
just do it
-
- 帖子: 3
- 注册时间: 2009-03-14 20:55
Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
thanks~!merci~!谢谢拉~!kqueenc 写了:首先,先了解一下file命令的作用,是判别文件的类型的,命令格式为:
file filename
输出为:
filename: bzip2 compressed data, block size.......
这样就很容易明白这段SCRIPT的意思了。
如果参数是ZIP文件,就使用UNZIP解压,如果是GZIP的话,就用BZIP2解压,如果是其他类型,就不解压,输出提示。
至于esac,请你颠倒过来看一下。
另外,你的问题,尤其是第3条,我看不太明白,可能是我的中文理解力比较差吧。看来不仅要学好数理化,祖国的语言也同样要跟上啊。
可能就是我的表达不好啦~!见谅,呵呵
看来我要学的还有好多哦!
再弱弱 的问一句哦~! 那个括号前面的星星是啥子意思~!?
-
- 帖子: 3
- 注册时间: 2009-03-14 20:55
Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
共同努力~!city0011 写了:这个程序就是 先判断下文件的类型
如果是第一种 的话
解压
第二种 的话
另一种 解压方式
否则 则 ERROR
两个 分号;;表示一个CASE情况的结束
右半扩号这一行表示 CASE的情况~~ :
我也刚学~~~ 加油喽~~
是不是就是说 那个右半括号之前的是case的情况 do后面的是不符合以上情况时做的事情类?~
- city0011
- 帖子: 91
- 注册时间: 2009-03-10 22:17
- 联系:
Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
mercurysatans 写了:共同努力~!city0011 写了:这个程序就是 先判断下文件的类型
如果是第一种 的话
解压
第二种 的话
另一种 解压方式
否则 则 ERROR
两个 分号;;表示一个CASE情况的结束
右半扩号这一行表示 CASE的情况~~ :
我也刚学~~~ 加油喽~~
是不是就是说 那个右半括号之前的是case的情况 do后面的是不符合以上情况时做的事情类?~
代码: 全选
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
if u like
just do it
just do it
-
- 帖子: 14
- 注册时间: 2009-03-06 10:25
Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
我运行楼上的程序,为什么出错啊?
What is your favourite OS?
./vim: 4: select: not found
You have selected
./vim: 8: Syntax error: "done" unexpected
What is your favourite OS?
./vim: 4: select: not found
You have selected
./vim: 8: Syntax error: "done" unexpected
-
- 帖子: 18
- 注册时间: 2009-03-31 22:23
Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
我也是,谁能给解决下
-
- 帖子: 3681
- 注册时间: 2008-05-03 23:42
Re: (新人报道~!)有问题啦~!不是很明白~!shell 方面的 ~!
select 应该用 #!/bin/bash 的