if判断目录 linux,linux shell判断一个文件名判断它是目录还是文件以及在windows下...

今天突然想在windows下利用cygwin执行一个脚本判断输入的文件名是目录还是文件,代码很简单,如下 #!/bin/shread -p enter file name: filenamepath=$filenameif [ -d $path ] then echo $filename is the directoryelif [ -f $path ] then echo $path is th

今天突然想在windows下利用cygwin执行一个脚本判断输入的文件名是目录还是文件,代码很简单,如下

#!/bin/sh

read -p "enter file name:" filename

path=$filename

if [ -d $path ]

then

echo "$filename is the directory"

elif [ -f $path ]

then

echo "$path is the file"

else

echo "$path is nothing"

fi可是在编写完之后,执行IsDirectOrFile却提示IsDirectOrFile.sh: line 12: syntax error near unexpected token `fi',一开始以为语法错误,但是检查了几遍后仍没有发现错误,后来上网查看了一下资料,突然就明白了是什么原因造成了。因为在windows下换行是cr/cl,而linux下换行是cl,而在notepad++默认的保存格式windows,所以不是语法错误,是文本编辑器保存的格式错误,解决方法如下图1:

图1

test.jsp?url=http%3A%2F%2Fimg.blog.csdn.net%2F20150102145953972&refer=http%3A%2F%2Fblog.csdn.net%2Fcbbbc%2Farticle%2Fdetails%2F42341093

执行转换后的脚本two.sh,效果如下图:

图2

test.jsp?url=http%3A%2F%2Fimg.blog.csdn.net%2F20150102150044328&refer=http%3A%2F%2Fblog.csdn.net%2Fcbbbc%2Farticle%2Fdetails%2F42341093

当然也可以采用如下命令:

vi xxx.sh

:set fileformat=unix

:wq执行后的效果如图2。

以上两种方法做的效果是把windows下的格式转换为unix的格式,具体说明如图3(网上找来的图)

图3

test.jsp?url=http%3A%2F%2Fmy.csdn.net%2Fuploads%2F201208%2F07%2F1344330287_7132.jpg&refer=http%3A%2F%2Fblog.csdn.net%2Fcbbbc%2Farticle%2Fdetails%2F42341093

另外需要注意的是:

1.if中的两边的[]要空格,如if [ $name="Chinese" ]

2.linux下参数的说明如下:

-b 当file存在并且是块文件时返回真

-c 当file存在并且是字符文件时返回真

-d 当pathname存在并且是一个目录时返回真

-e 当pathname指定的文件或目录存在时返回真

-f 当file存在并且是正规文件时返回真

-g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真

-h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效

-k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真

-p 当file存在并且是命令管道时返回为真

-r 当由pathname指定的文件或目录存在并且可读时返回为真

-s 当file存在文件大小大于0时返回真

-u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真

-w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的

-o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真

3.退出vi如何保存

按esc键跳到命令模式,然后:

:w 保存文件但不退出vi

:w  file 将修改另外保存到file中,不退出vi

:w! 强制保存,不推出vi

:wq 保存文件并退出vi

:wq! 强制保存文件,并退出vi

:q  不保存文件,退出vi

:q! 不保存文件,强制退出vi

:e! 放弃所有修改,从上次保存文件开始再编辑

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值