相关疑难解决方法(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万
查看次数

检查是否安装了apt-get软件包,然后安装它,如果它不在Linux上?

我正在研究Ubuntu系统,目前这正是我正在做的事情:

if ! which command > /dev/null; then
   echo -e "Command not found! Install? (y/n) \c"
   read
   if "$REPLY" = "y"; then
      sudo apt-get install command
   fi
fi
Run Code Online (Sandbox Code Playgroud)

这是大多数人会这样做的吗?还是有更优雅的解决方案?

bash shell apt-get

212
推荐指数
11
解决办法
21万
查看次数

如何检查shell脚本中是否存在命令?

我正在编写我的第一个shell脚本.在我的脚本中,我想检查是否存在某个命令,如果不存在,则安装可执行文件.我该如何检查此命令是否存在?

if #check that foobar command doesnt exist
then
    #now install foobar
fi
Run Code Online (Sandbox Code Playgroud)

shell

148
推荐指数
5
解决办法
11万
查看次数

检查Makefile中是否存在程序

如何检查程序是否可以从Makefile中调用?

(也就是说,程序应存在于路径中或以其他方式可调用.)

例如,它可用于检查安装的编译器.

例如类似这个问题,但不假设底层shell是POSIX兼容的.

makefile gnu-make

94
推荐指数
8
解决办法
5万
查看次数

从shell脚本启动Web浏览器的干净方法?

在bash脚本中,我需要启动用户Web浏览器.似乎有很多方法可以做到这一点:

  • $BROWSER
  • xdg-open
  • gnome-open 在GNOME上
  • www-browser
  • x-www-browser
  • ...

在大多数平台上是否有更多标准而非其他方式来实现这一点,或者我应该采用以下方式:

#/usr/bin/env bash

if [ -n $BROWSER ]; then
  $BROWSER 'http://wwww.google.com'
elif which xdg-open > /dev/null; then
  xdg-open 'http://wwww.google.com'
elif which gnome-open > /dev/null; then
  gnome-open 'http://wwww.google.com'
# elif bla bla bla...
else
  echo "Could not detect the web browser to use."
fi
Run Code Online (Sandbox Code Playgroud)

bash shell standards command-line standards-compliance

91
推荐指数
4
解决办法
9万
查看次数

Python中的"哪个"等效函数

我需要通过运行which abc命令来设置环境.是否有Python等效的which命令功能?这是我的代码.

cmd = ["which","abc"]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
res = p.stdout.readlines()
if len(res) == 0: return False
return True
Run Code Online (Sandbox Code Playgroud)

python command which

64
推荐指数
4
解决办法
4万
查看次数

检查文件是否可执行

我想知道什么是检查一个程序是否可以执行bash而不执行它的最简单方法?它至少应检查文件是否具有执行权限,并且具有相同的体系结构(例如,不是Windows可执行文件或其他不支持的体系结构,如果系统是32位,则不是64位,......)作为当前系统.

bash tcsh

63
推荐指数
4
解决办法
10万
查看次数

检查python脚本中是否存在程序

如何从python脚本检查程序是否存在?

比方说,你要检查wgetcurl可用.我们假设他们应该走在路上.

看到多平台解决方案是最好的,但目前Linux已经足够了.

提示:

  • 运行命令并检查返回代码并不总是足够的,因为即使您尝试,某些工具也会返回非0结果--version.
  • 检查命令时,屏幕上看不到任何内容

此外,我会感谢一个更通用的解决方案,比如 is_tool(name)

python

49
推荐指数
7
解决办法
4万
查看次数

如何通过Linux脚本检查是否安装了PostgreSQL?

如果在Linux上安装了PostgreSQL,我想检查脚本并打印结果.有关如何进行检查的任何建议?

linux postgresql shell

48
推荐指数
6
解决办法
12万
查看次数

如何检查PHP中是否存在shell命令

我在php中需要这样的东西:

If (!command_exists('makemiracle')) {
  print 'no miracles';
  return FALSE;
}
else {
  // safely call the command knowing that it exists in the host system
  shell_exec('makemiracle');
}
Run Code Online (Sandbox Code Playgroud)

有什么解决方案吗?

php linux exec

33
推荐指数
3
解决办法
2万
查看次数