Simon Hodgson Asked: 2009-08-06 05:50:03 +0800 CST2009-08-06 05:50:03 +0800 CST 2009-08-06 05:50:03 +0800 CST 如何检查文件是否存在 772 如何使用 shell 脚本确定文件是否存在? IE: #!/bin/sh if [ Does File Exist? ] then do this thing fi linux unix-shell 6 个回答 Voted Best Answer Kyle Brandt 2009-08-06T05:55:06+08:002009-08-06T05:55:06+08:00 除非您需要使用 /bin/sh,否则您可能想要 /bin/bash,/bin/sh 受到更多限制。因此,如果您使用的是 bash: 像这样: if [[ -e filename ]]; then echo 'exists' fi 如果您的文件名在变量中,请使用以下内容,如果文件中有空格,双引号很重要: if [[ -e "$myFile" ]]; then echo 'exists' fi 如果您使用的是 sh,并且希望与 IEEE Std 1003.1,2004 版本兼容,请改用单括号。仍然支持 -e 开关。 piotrsz 2009-08-06T05:52:38+08:002009-08-06T05:52:38+08:00 http://tldp.org/LDP/abs/html/fto.html thepocketwade 2009-08-06T05:55:43+08:002009-08-06T05:55:43+08:00 if [ -f filename ] 将测试是否存在常规文件。您可以传递其他开关来检查文件的可执行文件或其他属性。 nik 2009-08-06T05:54:40+08:002009-08-06T05:54:40+08:00 文件测试参考页 浏览完所有这些页面后, 请将此参考表放在手边。 Chad Huneycutt 2009-08-06T06:11:12+08:002009-08-06T06:11:12+08:00 总是有手册页: man test sucuri 2009-08-06T06:20:27+08:002009-08-06T06:20:27+08:00 请注意,如果您想要在所有 sh shell(不仅是 bash)和跨平台上工作的东西,唯一的方法是: ls filename >/dev/null 2>&1 if [ $? = 0 ]; then echo "File exists" fi
除非您需要使用 /bin/sh,否则您可能想要 /bin/bash,/bin/sh 受到更多限制。因此,如果您使用的是 bash:
像这样:
如果您的文件名在变量中,请使用以下内容,如果文件中有空格,双引号很重要:
如果您使用的是 sh,并且希望与 IEEE Std 1003.1,2004 版本兼容,请改用单括号。仍然支持 -e 开关。
http://tldp.org/LDP/abs/html/fto.html
if [ -f filename ]
将测试是否存在常规文件。您可以传递其他开关来检查文件的可执行文件或其他属性。
文件测试参考页
浏览完所有这些页面后,
请将此参考表放在手边。
总是有手册页:
man test
请注意,如果您想要在所有 sh shell(不仅是 bash)和跨平台上工作的东西,唯一的方法是: