繁体   English   中英

如果每个命令单独运行,为什么我的shell脚本会显示不同的输出?

[英]Why does my shell script display different output if each command is run individually?

我有以下shell脚本

#!/bin/sh
keyExists=`stat ~/.ssh/id_rsa &> /dev/null; echo $?`
echo $keyExists

当我将它作为./test.shsh test.sh运行时,它会输出

0 File: `/home/vagrant/.ssh/id_rsa' Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fc00h/64512d Inode: 2888560 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ vagrant) Gid: ( 1000/ vagrant) Access: 2014-07-23 11:40:33.355848310 -0400 Modify: 2014-07-23 11:40:33.355848310 -0400 Change: 2014-07-23 11:40:33.355848310 -0400 Birth: -

但是,当我在命令行上单独运行每个命令时

keyExists=`stat ~/.ssh/id_rsa &> /dev/null; echo $?`
echo $keyExists

我得到了输出

0

为什么我看到这个额外的输出?如何在运行shell脚本时抑制这个额外的输出?

在测试之前,确保您当前的shell是/bin/sh ,而不是/bin/bash

据我知道: &>是一个新功能bash ,而不是在旧sh

而不是使用&>/dev/null将其作为>/dev/null 2>&1 这将使您的脚本即使使用古老的sh shell也可以工作。 如果确实有bash,你也可以将标题更改为#!/bin/bash bash。 或者看看要知道which bash输出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM