小编zap*_*pee的帖子

SC2155的最佳实践:单独声明和分配

我正在编写 bash 脚本,而我的 IDE 抱怨以下声明:

local grey=$(tput setaf 154)
local red=$(tput setaf 196)
local bold=$(tput bold)
local default=$(tput sgr0)
Run Code Online (Sandbox Code Playgroud)

它是这样说的:

Declare and assign separately to avoid masking return values.
See SC2155.
Run Code Online (Sandbox Code Playgroud)

我理解这个警告的含义,并且我能够摆脱这个警告,但我的最终代码看起来很丑陋。

我可以这样抑制警告:

# shellcheck disable=SC2155
local grey=$(tput setaf 154)

# shellcheck disable=SC2155
local red=$(tput setaf 196)

# shellcheck disable=SC2155
local bold=$(tput bold)

# shellcheck disable=SC2155
local default=$(tput sgr0)
Run Code Online (Sandbox Code Playgroud)

或者我可以这样分开声明和赋值:

local grey
grey=$(tput setaf 154)

local red
red=$(tput setaf 196)

local bold
bold=$(tput bold)

local default
default=$(tput sgr0)
Run Code Online (Sandbox Code Playgroud)

上面的解决方案太冗长了。

我也可以这样做: …

bash

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

延迟/取消 Linux 关机

我知道类似的问题在这里被多次回答,我的问题可能看起来很奇怪,但我的情况不同。我想在另一个进程之前捕获 linux 关闭命令,在 UI 上显示一条消息,然后推迟/取消关闭。

情况是这样的: 我们使用虚拟机进行工作(Amazon 工作区)。我们在这台机器上拥有 root 访问权限another people(例如安全人员)。他们another people不尊重我们,当我们在机器上工作时,他们经常重新启动 Linux 工作区。我们使用带有 UI 的应用程序(即 Intellij IDE),有时在终端中工作。不幸的是,这里没有警告我们即将重启的警报。我不知道如何another people延迟或不延迟地重新启动虚拟工作区。

我想要什么:

  1. 在后台运行捕获关闭信号的脚本
  2. 在关闭信号到达任何应用程序之前捕获它!
  3. 显示 UI 警告(不是终端消息)。
  4. 然后阻止关闭,并允许我们稍后手动重新启动机器。

我知道我可以trap在 bash 脚本中捕获信号并取消信号shutdown -c,但有时为时已晚,信号会在我的脚本执行任何操作之前杀死另一个正在运行的用户进程。

问题是我可以在任何其他进程捕获关闭信号之前以某种方式捕获并取消关闭信号,并按时取消关闭吗?

也许有现有的工具可供使用,可以处理这种情况,但不确定。

another people不管你信不信,我们多次尝试交谈。另一个问题是,当关机发生在工作时间之外时,那么关机也必须推迟,因为我们只是关闭远程桌面并且不保存工作,因为第二天早上我们会回来。

如果您在不同时区工作,如何定义工作时间是另一个问题。

主要问题是如何在关闭信号到达任何应用程序之前捕获并取消它。

linux shutdown bash amazon-ec2 aws

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

标签 统计

bash ×2

amazon-ec2 ×1

aws ×1

linux ×1

shutdown ×1