linux - Bash here 文档 - 禁止将代码打印到屏幕上?

标签 linux bash shell unix

我正在编写一个脚本以通过 cmd“sudo/etc/bgenomics”(这是由我们的管理员设置)成为用户(让我们称之为基因组学)并以该用户身份运行一些 bash 代码,即运行一个 cmd,捕获退出代码并采取适当的措施。

问题是 here 文档中的 bash 代码被打印到屏幕上,这会让人分心,而且看起来真的很不雅观。

这是一个例子:

#!/bin/bash

name='George'

sudo /etc/bgenomics <<Q
/bin/bash
if (( 2 == 2 )); then
    echo "my name is $name"
    grep zzz /etc    # will return nothing and $? = 1
    echo \$?    # this should be 1 after the above cmd
fi
Q

if 语句只是为了显示它在打印时有多烦人。

现在所有以下内容都打印到屏幕上:

Script started, file is /var/tmp/genomicstraces/c060644.20140617143003.11536
Script done, file is /var/tmp/genomicstraces/c060644.20140617143003.11536
brainiac-login-02$brainiac-login-02$/bin/bash
bash-3.2$ if (( 2 == 2 )); then
> echo "my name is George"
> grep zzz /etc    # will return nothing and 0 = 1
> echo $?    # this should be 1 after the above cmd
> fi
my name is George
1

我唯一想看的部分是“我叫乔治”和“1”。可以吗?

最佳答案

是否有另一个进程调用这个脚本?除非使用“-x”调用 bash,否则通常不会出现输出。如果您无法在调用过程中禁用 echo,请尝试修改脚本的第一行:

#!/bin/bash +x

您可能还想在 sudo 命令后删除对/bin/bash 的调用,除非您真的希望在您的 shell 中启动另一个 shell。

关于linux - Bash here 文档 - 禁止将代码打印到屏幕上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24270974/

相关文章:

bash - 计算进程数并杀死它们

python - 通过 Python 运行终端命令时出现问题

java - 在 Eclipse 中运行 JAR "Export"时使用的 shell 命令是什么?

linux - 有没有办法将以下逻辑放入 grep 命令中?

bash - 如何从文件名中获取字符串并将其用作参数

linux - Linux 脚本中 while/case 语句的问题

linux - 打印不包含句号的行 linux

c - 套接字编程-简单的客户端/服务器

linux - 我的汇编程序中出现段错误

bash - 从 bash 脚本启动一个新的进程组