其中一个目录中有.sh文件 例如:path = /opt/WD/CD/SCD/temp.sh
是否有任何函数是c ++来检查该位置(路径)中的文件是否是脚本(.sh)文件
bool ValidCommand(const string & path)
{
bool return = true;
{
if (!access(path.c_str(),X_OK))
{
return = true;
}
else
return = false;
}
path = /opt/WD/CD/SCD/temp.sh
访问对我不起作用:(
答案 0 :(得分:1)
看看
答案 1 :(得分:0)
也许stat
可以满足您的需求,否则您可以查看file
的来源,看看它是如何做到的。
答案 2 :(得分:0)
您可以使用stat。如果失败(返回-1),则该文件不存在。
答案 3 :(得分:0)
你想要它有多精确?阅读起来相当简单
目录并查找以.sh
结尾的文件名。
(boost::filesystem
拥有你需要的一切。)但当然,
如果我愿意,我可以命名我的C ++标题file.sh
(并且有点
乖张)。一个更准确的测试将涉及阅读
文件的开头:如果前两个字节是"#!"
,那么它可能是一个
某种脚本,如果第一行匹配
"#!\\s*(?:/usr)?/bin/sh/[a-z]*sh"
,那么你几乎可以肯定它是一个外壳
脚本。删除[a-z]*
,它是Bourne或Posix shell脚本。