相关疑难解决方法(0)

set -e在bash脚本中的含义是什么?

我正在研究脚本在从Debian存档(.deb)文件解压缩该包之前执行的这个preinst文件的内容.

该脚本具有以下代码:

#!/bin/bash
set -e
# Automatically added by dh_installinit
if [ "$1" = install ]; then
   if [ -d /usr/share/MyApplicationName ]; then
     echo "MyApplicationName is just installed"
     return 1
   fi
   rm -Rf $HOME/.config/nautilus-actions/nautilus-actions.conf
   rm -Rf $HOME/.local/share/file-manager/actions/*
fi
# End automatically added section
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是关于这一行:

set -e
Run Code Online (Sandbox Code Playgroud)

我认为脚本的其余部分非常简单:它检查Debian/Ubuntu包管理器是否正在执行安装操作.如果是,它会检查我的应用程序是否刚刚安装在系统上.如果有,脚本将打印消息"MyApplicationName刚刚安装"并结束(return 1意味着以"错误"结束,不是吗?).

如果用户要求Debian/Ubuntu软件包系统安装我的软件包,该脚本还会删除两个目录.

这是对的还是我错过了什么?

linux bash shell sh

617
推荐指数
9
解决办法
34万
查看次数

在内存中创建一个临时文件并将其用作命令的输入文件

我想在我的bash脚本中使用pdflatex命令。它以文件名作为输入,它将在其上处理内容。

现在,我有一个算法,如下所示:

for stuff in list of stuff; do
  echo "${stuff}" > /tmp/tmpStuff
  pdflatex /tmp/tmpStuff
done 
Run Code Online (Sandbox Code Playgroud)

现在,这可以按预期工作。但是我当时想通过减少磁盘I / O来加快速度(因为>重定向写入文件)。我希望我可以编写类似的内容,echo "$stuff" | pdflatex /tmp/tmpStuff但pdflatex使用文件而不是stdin作为其输入。有什么办法可以保存"$stuff"在内存中并将其作为一种文件传递给pdflatex?

TLDR:如果我可以创建一个可以命名并在内存中的临时文件,我会很高兴。

bash

5
推荐指数
3
解决办法
4428
查看次数

如何从源命令捕获/重定向 stdout/stderr 到变量(在 bash 脚本中)?

通常我通过子shell捕获输出: result="$(command 2>&1)"

如果命令是source,则子外壳会吞下对脚本外壳环境的一些(全部?)更改。

如何将 的输出捕获source到变量中?

bash stdout stderr subshell

1
推荐指数
1
解决办法
134
查看次数

标签 统计

bash ×3

linux ×1

sh ×1

shell ×1

stderr ×1

stdout ×1

subshell ×1