我正在读取输入中的一些命令,并在我的java程序中在运行时执行。如果存在任何语法或语义错误,它将在运行时失败。而不是我想早点失败。所以我想在执行之前验证命令。
我该怎么做?有没有简单的方法。
例如:
grep -P -o "cpums=[^ ]+" | cut -f2 -d= | cut -f1 -d"]" | awk '{a+=$1;}
END {print a;}
此命令末尾会遗漏单引号(')。它将在我的java程序中在运行时失败。如果它能早早失败会很棒。所以我只想在程序开始时验证每个命令。
我正在寻找一种最佳方式。
答案 0 :(得分:2)
不,没有简单的方法。有一种困难的方法,它涉及到你提出一套规则并使用某种解析器。这是一种效率低下的方法,它涉及尝试执行命令只是为了查看它是否有效。可能还有其他方法,但我认为其中任何一种都不简单。
你有没有尝试谷歌搜索?有一个小但非零的可能性,其他人已经写过它。
答案 1 :(得分:1)
检查语法和参数的最佳方法是使用与您期望的正则表达式对应的用户输入进行解析。
如果它与你正在等待的wath不匹配,那么你可以向用户提示“使用说明”。
答案 2 :(得分:0)
试试这个:
sh -n yourscriptfile
bash -n yourscriptfile
set -u
也有助于捕获拼写错误和未初始化的变量
答案 3 :(得分:0)
哦,这真的很“容易”。