bash shell如何获取到命令执行结果的值?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bash shell如何获取到命令执行结果的值?相关的知识,希望对你有一定的参考价值。

test -e /mnt/111 && echo "yes" || echo "no"
如何获取到test判断mnt下的111是否存在并且根据返回的yes或者no来选择性执行下面的命令?我现在获取不到test这个值
我是这样写的
yn=test -e /mnt/111 && echo "yes" || echo "no"
if [ $yn = yes ];then
cd /mnt/111
echo "I come here"
fi
if [ $yn = no ];then
mkdir /mnt/111
echo "Is create"
fi
这样写不行,获取到的yes和no的值他只是输出了并没有用来做判断啊。
我的想法就是先判断/mnt/111是否存在,如果存在就进入到这个目录中并且说一句话,如果不存在就创建111目录然后说一句话。

将一条命令的执行结果取得命令执行结果的值有:

1、使用反引号`` (数字键1左边的键,tab键上面,英文方式输入) 如:a=`echo "hello world"`;即将命令 echo "hello world"的输出赋给变量a

2、可以使用 $(()),如:a=$(echo "hello world"),即将命令echo "hello world"的输出赋给变量a。

以下为具体语句:

实例结果:

shell 是一个交互性命令解释器。shell独立于操作系统,这种设计让用户可以灵活选择适合自己的shell。shell让你在命令行键入命令,经过shell解释后传送给操作系统(内核)执行。 

shell是一个命令处理器(command processor)——是一个读入并解释你输入的命令的程序。除了是一个命令中断器以外,shell还是一个程序设计语言。你可以编写shell可以解释的程序(被称为源程序),这些源程序可以包含shell程序设计命令等等。shell除了解释命令以外,还有其他工作,它也可以配置和编程。       

参考技术A 通过 $? 获取上一次命令执行的结果,0表示成功,非0表示失败。

test -e /mnt/111
if [ $? -eq 0 ]; then
cd /mnt/111
echo "I come here"
else
mkdir /mnt/111
echo "It's created"
fi

也可以先将结果赋给一个变量 ret=`echo $?`,然后再判断变量的值是否为0。本回答被提问者采纳

Gradle执行Shell命令并获取执行结果|进行JSON数据解析

一、在gradle中新增自定的task

task custom 
    def out = new ByteArrayOutputStream()
    def cmd = 'ls -l'
    exec 
        ExecSpec execSpec ->
            executable 'bash'
            args '-c', cmd
            standardOutput = out
    
    println(out.toString())

通过调用exec就可以执行那些可以在Terminal中运行的命令了,standardOutput参数就可以获取到命令执行的结果信息,执行结果如下:

二、上面说到可以执行shell命令,当你执行的是个curl时便有可能会返回JSON格式的数据这时候就需要进行解析了

  • 解析也是很简单,只需要使用到groovy.json.JsonSlurper()
task parseJson 
    def json = '"json":"哈哈哈"'
    def parsedJson = new groovy.json.JsonSlurper().parseText(json)
    println(parsedJson)
    //直接.json的key获取值
    println(parsedJson.json)

执行结果如下:

以上是关于bash shell如何获取到命令执行结果的值?的主要内容,如果未能解决你的问题,请参考以下文章

Gradle执行Shell命令并获取执行结果|进行JSON数据解析

shell 获取命令执行的结果,获取结果返回

如何将一shell脚本中的每一步命令执行结果输出到指定日志文件中

shell 如何获取一条命令的输出结果

linux bash中怎么拼接两个相互关联的命令,前者执行的结果是后者需要的,改怎么嵌套?

shell基础(上)