小编Cha*_*ffy的帖子

在make中取消设置变量时获取默认值

(编辑:基于@Michael反馈的问题更准确)

在bash中,我经常使用参数扩展:以下命令default value$VARNAME未设置时打印" " ,否则打印VARNAME内容.

echo ${VARNAME:-default value}  #if VARNAME empty => print "default value" 
echo ${VARNAME-default value}   #if VARNAME empty => print "" (VARNAME string)
Run Code Online (Sandbox Code Playgroud)

没有在GNU上找到类似的功能make.我终于在我写的Makefile:

VARNAME ?= "default value"
all:
        echo ${VARNAME}
Run Code Online (Sandbox Code Playgroud)

但我对这个解决方案不满意:它总是创建变量VARNAME,这可能会改变某些makefile上的行为.

有没有更简单的方法来获取未设置变量的默认值?

bash gnu-make variable-expansion

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

10
推荐指数
2
解决办法
3697
查看次数

system()函数字符串的长度限制

字符串可以传递多长时间system()

我知道POSIX的最小值是4096,但我想知道可以使用的实际尺寸。是否在任何标头中定义了任何宏,类似于FILENAME_MAX

char cmd[SOME_MACRO];

...
system(cmd);
Run Code Online (Sandbox Code Playgroud)

c linux posix

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

有没有办法在本地运行 Azure Pipelines 配置以查看其输出?

我有一个需要运行的示例 yaml 文件,我可以看到它在 Azure Pipelines 中运行,但是如何在本地运行它以在我的计算机上进行测试?

尝试了 powershell、docker、解析 YAML 的库,但没有运行 yaml.load 等文件(一些示例文本)

steps:
- script: echo Hello, world!
  displayName: 'Run a one-line script'
Run Code Online (Sandbox Code Playgroud)

我希望看到的是一个标题为“运行单行脚本”的窗口,上面写着 hello world!在它上面,但我似乎无法运行它,如果可能的话,我可以使用 IIS 来运行这个文件。

azure-devops

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

使用 pyenv 设置默认 python

我尝试通过安装 PYENV 和 PYPIP 在我的 macOS Catalina 10.15.1 上升级我的 Python 版本,并将全局和本地设置为版本 3.8.0。但是当我尝试使用 python 版本时,它仍然显示内置在 MacOS 操作系统中的 python 版本。缺少哪一部分?

$ pyenv -v
pyenv 1.2.14

$ pypip -v
zsh: command not found: pypip

$ pyenv versions
  system
* 3.8.0 (set by /Users/aj/.python-version)

$ pyenv global
3.8.0

$ pyenv local
3.8.0

$ python -V
Python 2.7.16
Run Code Online (Sandbox Code Playgroud)

python pyenv macos-catalina

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

将变量传递给Subprocess.Popen

我有一个脚本,它通过subprocess.Popen模块调用另一个python脚本.但因为我有变量存储的参数

servers[server]['address']
servers[server]['port']
servers[server]['pass']
Run Code Online (Sandbox Code Playgroud)

我无法执行命令

p = subprocess.Popen(["python mytool.py -a ", servers[server]['address'], "-x", servers[server]['port'], "-p", servers[server]['pass'], "some additional command"], shell=True, stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

python subprocess

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

如何在POSIX sh字符串中替换"/"

要替换bash字符串中的子字符串,str我使用:

str=${str/$pattern/$new}
Run Code Online (Sandbox Code Playgroud)

但是,我现在正在编写一个将被执行的脚本ash.

我有一个包含的字符串'/',我想使用上面的语法来替换'/'我的字符串,但它不起作用.

我试过了:

str=${str///a}
str=${str/\//a}
str=${str/'/'/a}
Run Code Online (Sandbox Code Playgroud)

但它们不起作用

我怎么解决这个问题?

linux string shell ash

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

PostgreSQL:扁平化与数组的关系,每个数组条目发出一行

给定一个如此定义的表:

CREATE TABLE test_values(name TEXT, values INTEGER[]);
Run Code Online (Sandbox Code Playgroud)

......以及以下值:

| name  | values  |
+-------+---------+
| hello | {1,2,3} |
| world | {4,5,6} |
Run Code Online (Sandbox Code Playgroud)

我正在尝试查找将返回的查询:

| name  | value |
+-------+-------+
| hello | 1     |
| hello | 2     |
| hello | 3     |
| world | 4     |
| world | 5     |
| world | 6     |
Run Code Online (Sandbox Code Playgroud)

我已经回顾了有关访问数组的上游文档,并试图考虑使用unnest()函数的解决方案是什么样的,但是它已经空洞了.

即使在阵列被扩展且没有主键的情况下存在大量列的情况下,理想的解决方案也将易于使用.处理具有多个数组的案例并不重要.

sql arrays postgresql lateral set-returning-functions

9
推荐指数
2
解决办法
7133
查看次数

SQLAlchemy:创建query.from_statement(text(...))的子查询,引发AttributeError

我正在构建一个严重依赖SQLAlchemy的查询构建器的工具,但它允许用户在模型不足的情况下指定要加入的子查询的文本文本.

但是,当我尝试这样的事情时:

q = session.query().from_statement(sa.text(subquery_text)).subquery(subquery_name)
Run Code Online (Sandbox Code Playgroud)

......发生异常:

  File ".../lib/sqlalchemy/orm/query.py", line 473, in subquery
    return q.alias(name=name)
AttributeError: 'AnnotatedTextClause' object has no attribute 'alias'
Run Code Online (Sandbox Code Playgroud)

查看.subquery()SQLAlchemy的代码库中的实现提高了我们如何从Query对象到AnnotatedTextClause的清晰度:

def subquery(self, name=None, with_labels=False, reduce_columns=False):
    # docstring in the original omitted here for brevity
    q = self.enable_eagerloads(False)
    if with_labels:
        q = q.with_labels()
    q = q.statement
    if reduce_columns:
        q = q.reduce_columns()
    return q.alias(name=name)
Run Code Online (Sandbox Code Playgroud)

......但我发现自己对于我正在尝试做的事情是否有可能没有任何启发,如果是这样的话,它将如何实现.

python sqlalchemy

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

为什么在 systemd 覆盖中的另一个 ExecStart=/new/value 之前使用 ExecStart= (没有值)?

我想采用 systemd 覆盖方式让 dockerd 监听端口 2376。所以我遵循了这个指令

另一方面,我想深入了解 systemd 以了解其幕后情况。所以我尝试通过以下命令检查 docker 的单元文件: systemctl cat docker.service

从命令的输出结果来看,涉及到两个文件。

  1. /lib/systemd/system/docker.service
  2. /etc/systemd/system/docker.service.d/override.conf

我相信第一个是 docker 的默认单元文件,第二个是我创建的。

我的问题是:两个文件都包含句子 -ExecStart=并且在第二个文件中包含两次,例如:

ExecStart=
ExecStart=/usr/bin/dockerd -H fd://
Run Code Online (Sandbox Code Playgroud)

ExecStart=在设置有意义的值之前是否有必要分配空ExecStart=/usr/bin/dockerd -H fd://

我将这篇文章分为两个问题,另一个问题在这里

systemd

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