簡體   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