目标:遍历软件包列表并只发布不存在于npm注册表中的软件包。如果注册表中已经存在相同版本的软件包,则放弃任何进一步的操作。
package="@react-framework/deploy@1.2.3.0" // package name extracted from the actual tgz file
checkRegistry=$(npm view $package) # There are three types of output
# NPM Err (Package Not Exists)
# NULL (Package Not Exists)
# return information about the package (Package Exists)
if [ [grep -q "npm ERR!"] || [$checkRegistry==""] ]; then
npm publish $package
我一直有一个错误的if语句,并假设有一个语法错误与我的条件。
我想知道:
1.是否可以将npm命令的输出(在本例中为npm view
)赋给变量?
- if语句的语法有什么问题吗?
1条答案
按热度按时间2w3kk1z51#
grep
不应该放在方括号内,因为您希望直接测试它是否成功,而不是在test
命令中使用它的输出。您也没有使用
$checkRegistry
的值作为grep
命令的输入。但是,如果只想检查
$checkRegistry
是否与模式匹配,则不需要使用grep
,可以使用shell的内置regexp匹配。