sem*_*ius 35 linux bash scripting
我有一个bash脚本:
echo " enter file name "
read $file
if [ -f "$file" ] && [ -s "$file" ]
then
echo " file does not exist, or is empty "
else
echo " file exists and is not empty "
fi
Run Code Online (Sandbox Code Playgroud)
无论我输入什么$file,它都给了我错误的价值.我甚至可以输入一个甚至不存在的文件,它仍然会给我错误的价值.为什么那些家伙?提前致谢
Nid*_*ger 77
它足以检查-s,因为它说:
FILE存在且大小大于零
http://unixhelp.ed.ac.uk/CGI/man-cgi?test
你的输出也被切换了,所以它does not exists在文件存在时输出,因为如果文件存在-s则会输出TRUE并且有一个size > 0.
所以你应该正确使用:
echo " enter file name "
read file
if [ -s "$file" ]
then
echo " file exists and is not empty "
else
echo " file does not exist, or is empty "
fi
Run Code Online (Sandbox Code Playgroud)
这将为您提供预期的输出.
它应该是
read file
Run Code Online (Sandbox Code Playgroud)
代替
read $file
Run Code Online (Sandbox Code Playgroud)
如果你想要进一步的信息,我建议阅读man test和man read
请注意,如果文件存在且不为空,[ -f "$file" ] && [ -s "$file" ]它将返回true。
其他选择:
if [[ -f "/path/to/file" && -s "/path/to/file" ]]; then
echo "exist and not empty"
else
echo "not exist or empty";
fi
Run Code Online (Sandbox Code Playgroud)