Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MacOS中shell脚本判断目录下是否存在已知后缀名文件的命令 #10

Open
allenGKC opened this issue Apr 20, 2018 · 2 comments
Labels

Comments

@allenGKC
Copy link
Owner

背景

最近写项目的时候,需要将webpack打包后的静态文件压缩发送给后端传到服务器上,由于每次打包压缩比较机械,所以想到写个shell脚本来自动化。

问题

但是在写shell脚本时遇到一个问题:需要判断目录下是否存在.zip文件?

方法一(无效):

刚开始我查资料,使用了if [ -f *.zip ],用-f和通配符来判断是否有.zip的文件存在,然而运行结果一直报错“unexpected operator”,因此在-f下,后面是不能使用通配符的。

方法二(无效):

后来,我又想了一个办法,if [ -n “‘ls *.zip'” ],这句话的意思是,如果ls命令执行后有得到内容,则是真,其中-n表示后面的内容不是空值时为真。这句话是可以用,可以判断文件存在在目录下,但是,这是出现了个问题,如果目录下没有.zip的文件,就会报错“No such file or directory”,于是我放弃了这个方法。

方法三(管用!):

最后一个看了一个博客里方法,使用 if ls *.c >/dev/null 2>&1;then,这是一个重定向的方法,ls所有以.zip为后缀的文件,如果不存在,将标准错误重定向到标准输出,这里2>&1 的意思就是将标准错误也输出到标准输出当中。重定向中 0-标准输出,1-标准输出,2-标准错误,而No such file or directory是一个标准错误。

注意事项

值得注意的是:这个if后面没有中括号!并且2>&1的“>”是没有空格的!

@allenGKC allenGKC changed the title 记录MacOS中shell脚本判断目录下是否存在已知后缀名文件的命令的一次调研 MacOS中shell脚本判断目录下是否存在已知后缀名文件的命令 Apr 20, 2018
@allenGKC allenGKC added the Shell label Mar 29, 2019
@ststooyoudu
Copy link

好用!

@WUTONK
Copy link

WUTONK commented Mar 26, 2023

很受用,感谢!
最后一段代码是不是复制错了?没写完 我补全一下
if ls *.c >/dev/null 2>&1;then echo "文件存在" fi
ps:记得换行

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants