首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将命令输出重定向到cmd脚本中的变量

将命令输出重定向到cmd脚本中的变量
EN

Stack Overflow用户
提问于 2012-07-04 22:30:26
回答 2查看 4.3K关注 0票数 0

我正在编写一个cmd脚本,用于使用keytool创建自签名证书。我想检查别名是否已经存在于密钥库中,

因此,我需要执行下面的命令并将其存储在一个变量中。因此,如果变量为空,我可以假定别名不存在,

代码语言:javascript
运行
复制
  keytool -list -v -storepass "%KEYSTORE_PASS%" -keystore cert/seurat-keystore.jks ^| find "Alias name: 1"

我试着用

代码语言:javascript
运行
复制
   FOR /F "tokens=* delims=" %%A IN ('keytool -list -v -storepass "%KEYSTORE_PASS%" -keystore cert/seurat-keystore.jks ^| find "Alias name: 1"') DO SET Variable=%%A
    echo %Variable%

但它显示echo off。我使用下面的代码在shell脚本中实现了同样的功能,

代码语言:javascript
运行
复制
   if [ -n  "$(keytool -list -v -storepass "${KEYSTORE_PASS}" -keystore cert/seurat-keystore.jks | grep 'Alias name: 1')" ] ; then
   fi

如何在cmd脚本中实现相同的功能?任何帮助都是非常有用的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-05 09:03:33

打扰了。你写道:“如果变量为空,我可以假定别名不存在”。如果echo %variable%命令show ECHO OFF,则变量为null!我认为你的代码是正确的,但是稍微修改一下:

代码语言:javascript
运行
复制
FOR /F "tokens=* delims=" %%A IN ('keytool -list -v -storepass "%KEYSTORE_PASS%" -keystore cert/seurat-keystore.jks ^| find "Alias name: 1"') DO SET Variable=%%A
if "%Variable%" == "" (
   echo The alias doesn't exists
) else (
   echo The alias is: %Variable%
)

另一种方式是:

代码语言:javascript
运行
复制
if not defined Variable (
   echo The alias doesn't exists
) else (
   echo The alias is: %Variable%
)
票数 0
EN

Stack Overflow用户

发布于 2012-07-06 02:09:54

因为我还没有得到这个keytool的东西,我不知道它是什么或做什么。但我用一个ECHO命令替换了它,它对我有效:

代码语言:javascript
运行
复制
FOR /F "tokens=* delims=" %%A IN ('ECHO Alias name: 1 ^| find "Alias name: 1"') DO SET Variable=%%A
echo %Variable%

输出结果为:

代码语言:javascript
运行
复制
Alias name: 1

当我将替换命令更改为ECHO Alias name: 2时,输出是不同的:

代码语言:javascript
运行
复制
ECHO is off.

这意味着变量没有初始化,这是意料之中的,因为FIND命令这次在输入流中找不到指定的字符串。

结论:当您运行keytool时,它的输出可能不包含搜索到的术语,因此,您的变量不会被初始化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11331054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档