日期:2014-05-16  浏览次数:20613 次

linux语句解释
有个shell脚本,里面有一些语句不是很理解,求解释。语句如下:

1.mkdosfs "$1"1 > /dev/null 2>&1
2.if [ "$1" != "img" ] && [ "$1" != "imgbb" ] ; then //"img"和"imgbb"是什么意思
  ...
3.if [ "$IMAGE_PATH" == "" -o ! -d "$IMAGE_PATH" ]; then//参数-o和-d不知道是什么意思
  ...
4.umount /boot > /dev/null 2>&1


------解决方案--------------------
"img" "imgbb"字符串啊,用于判断而已吧。
都要根据上下文看意思吧。
------解决方案--------------------
-o表示或者,or
-d应该表示目录,directory
------解决方案--------------------
1.mkdosfs "$1"1 > /dev/null 2>&1
2.if [ "$1" != "img" ] && [ "$1" != "imgbb" ] ; then //"img"和"imgbb"是什么意思
...
3.if [ "$IMAGE_PATH" == "" -o ! -d "$IMAGE_PATH" ]; then//参数-o和-d不知道是什么意思
...
4.umount /boot > /dev/null 2>&1

1
"$1" 表示脚本的第二个参数(第一个参数,也就是$0,为脚本的名字)
1 表示STDOUT,即所谓的标准输出;
2 表示STDERR,即所谓的标准错误;
mkdosfs $1 format参数代表的partition 为dos文件系统,似乎是FAT32吧?
并且命令的输出被重定向到/dev/null设备(也即是"黑洞"),
同时让命令打印的错误信息输出定向到/dev/null;
也就是说无论该命令输出了什么东西,你都看不到。

if [ "$1" != "img" ] && [ "$1" != "imgbb" ] ; then
img , imgbb这些只是字符串而已,
这句shell的意思是:若第二个参数既不是img,也不是imgbb的话,就....

3
if [ "$IMAGE_PATH" == "" -o ! -d "$IMAGE_PATH" ];
这里的IMAGE_PATH是变量,
-o 代表逻辑或
! 代表逻辑非
-d 测试目录是否存在
这句的意思是: 若变量IMAGE_PATH的值为空 或者 IMAGE_PATH的值代表的路径不存在,则... 

4
umount /boot 用以卸载一个partition
 > /dev/null 2>&1 效果等同于 1 > /dev/null 2>&1