小编set*_*voy的帖子

Bash:使用dot或"source"调用另一个脚本 - 有什么区别?

我们举一些例子:

$ cat source.sh
#!/bin/bash
echo "I'm file source-1"

. source-2.sh
Run Code Online (Sandbox Code Playgroud)

和:

$ cat source-2.sh
#!/bin/bash
echo "I'm file source-2"
Run Code Online (Sandbox Code Playgroud)

现在运行:

$ ./source.sh
I'm file source-1
I'm file source-2
Run Code Online (Sandbox Code Playgroud)

如果我先改变第二个文件的调用:

$ cat source.sh
#!/bin/bash
echo "I'm file source-1"

source source-2.sh
Run Code Online (Sandbox Code Playgroud)

它会产生与使用相同的影响dot.

那么 - 这种方法有什么区别?谢谢.

bash

49
推荐指数
2
解决办法
1万
查看次数

pylint说"%r关键字后不必要的parens"

在我的第一个CodeReview Q之后 - 我得到了回答:

您的代码似乎适用于Python 2.x. 为了更好地准备将来可能迁移到Python 3.x,我建议开始将print ...语句写为print(...)

因此,在我的下面的代码中(我在我的盒子上使用Python 2.6和2.7)我总是()print:

print('Hello')
Run Code Online (Sandbox Code Playgroud)

今天我第一次用PyLint测试我的代码,它说:

C:43,0:'print'关键字后不必要的parens(多余的parens)

这里解释一下.

那么 - 确实print(str)是不正确的,或者我可以忽略这个PyLint消息?

python python-2.7 python-3.x

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

Travis:针对不同分支的不同`script`?

我想使用Travis-CI和Github基于分支机构进行部署.

即 - 如果我们使用develop- 然后/deploy.rb使用DEV env主机名执行构建,如果master- 然后./deploy.rb使用PROD主机名,依此类推.

我发现只有一个想法 - 检查$TRAVIS_BRANC变量然后执行脚本,如:

language: php
install:
  - true
script:
  - test $TRAVIS_BRANCH = "develop" && ./ci/deploy.rb envdev.tld 
  - test $TRAVIS_BRANCH = "master" && ./ci/deploy.rb envprod.tld
Run Code Online (Sandbox Code Playgroud)

但对我来说,这个解决方案看起来有点奇怪.还有其他可能的事情吗?

任何提示/链接赞赏.

travis-ci

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

为什么在bash脚本中需要"declare -f"和"declare -a"?

抱歉这么无辜的问题 - 我只是试着去...

例如 - 我有:

$ cat test.sh
#!/bin/bash
declare -f testfunct

testfunct () {
echo "I'm function"
}

testfunct

declare -a testarr

testarr=([1]=arr1 [2]=arr2 [3]=arr3)

echo ${testarr[@]}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到:

$ ./test.sh
I'm function
arr1 arr2 arr3
Run Code Online (Sandbox Code Playgroud)

所以这是一个问题 - 我必须(如果必须......)插入declare这里?随着它 - 或没有它它的工作原理相同......

我可以理解例如declare -i vardeclare -r var.但是对于什么是-f(声明函数)和-a(声明数组)?

感谢您的提示和链接.

bash function declare

16
推荐指数
3
解决办法
1万
查看次数

在引号中使用define宏及其值

出于好奇而编写一些C代码,我想将MySQL连接的某些值移动到某种类型const.

问题1 在预处理器宏中存储主机,用户等是一个好主意吗?即:

#include <my_global.h>
#include <mysql.h>

#define DB_HOST "mysqlhost.com"
#define DB_USER "mysqlusername"
#define DB_TABLE "tablename"
...
Run Code Online (Sandbox Code Playgroud)

以后要用它们mysql_real_connect(con, DB_HOST, DB_USER, DP_PASS, DB_NAME, 0, NULL, 0) == NULL) 吗?

问题2

我可以DB_TABLE在带引号的字符串中使用值吗?即mysql_query(con, "SELECT * FROM DB_TABLE")

如果是这样 - 在这里使用它的方法是什么?

c macros preprocessor-directive

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

ImportError:没有名为distutils的模块

尝试安装psutils导致严重的头痛...

$ python -V
Python 2.4.2

$ cat /etc/SuSE-release
SUSE Linux Enterprise Server 10 (x86_64)
VERSION = 10
PATCHLEVEL = 4


$ cd psutil-2.1.1/
$ python setup.py install
Traceback (most recent call last):
  File "setup.py", line 17, in ?
    from distutils.core import setup, Extension
ImportError: No module named distutils.core
Run Code Online (Sandbox Code Playgroud)

下一步-我尝试安装setuptools使用easy_install

$ which easy_install
which: no easy_install

$ cd ../setuptools-1.4/

$ python setup.py install
Traceback (most recent call last):
  File "setup.py", line 12, in ? …
Run Code Online (Sandbox Code Playgroud)

python distutils easy-install

5
推荐指数
2
解决办法
1万
查看次数

$ {var:= default} vs $ {var:-default} - 有什么区别?

似乎都做了完全相同的动作.

两种情况下都是空的$var回报defaultvalue:

$ var=
$ echo ${var:-defaultvalue}
defaultvalue

$ var=
$ echo ${var:=defaultvalue}
defaultvalue
Run Code Online (Sandbox Code Playgroud)

在两种情况下,非空$var返回它的:

$ var=var
$ echo ${var:-defaultvalue}
var

$ var=var
$ echo ${var:=defaultvalue}
var
Run Code Online (Sandbox Code Playgroud)

$var根本没有设置 - defaultvalue在两种情况下都返回:

$ unset var
$ echo ${var:-defaultvalue}
defaultvalue

$ unset var
$ echo ${var:=defaultvalue}
defaultvalue
Run Code Online (Sandbox Code Playgroud)

variables bash

5
推荐指数
2
解决办法
3107
查看次数

每个线程的CPU使用率

我需要为每个进程线程获取CPU%.

所以,我创建了简单的脚本:

import psutil
from psutil import Process
p = psutil.Process(4499)

treads_list = p.get_threads()

for i in treads_list:
    o = i[0]
    th = psutil.Process(o)
    cpu_perc = th.get_cpu_percent(interval=1)
    print('PID %s use %% CPU = %s' % (o, cpu_perc))
Run Code Online (Sandbox Code Playgroud)

以下是此过程的TOP样式:

 4942 teamcity  20   0 3288m 831m 3124 R 33.3 10.6  10303:37 java
32700 teamcity  20   0 3288m 831m 3124 S  5.9 10.6  18:49.99 java
 5824 teamcity  20   0 3288m 831m 3124 S  5.9 10.6   1:57.90 java
 4621 teamcity  20   0 3288m 831m …
Run Code Online (Sandbox Code Playgroud)

python multithreading

5
推荐指数
2
解决办法
4183
查看次数

将MySQL密码存储在bash脚本中

需要创建简单的mysql-backup脚本.

但是 - 如何在其中存储MySQL用户的加密传递?

我想避免在任何其他文件中以明文类型存储密码.

正如我在MySQL手册中找到的:

MySQL使用自己的算法加密存储在用户表中的密码

所以.没有办法获得hash并将其设置为变量?

我的意思是:

DBHASH="cGFzc3dvcmQ="
DBPASS=`echo $DBHASH | openssl enc -base64 -d`
Run Code Online (Sandbox Code Playgroud)

有没有正确的方法来解决它?谢谢你的提示.

mysql passwords bash

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

TypeError:'Logger'对象不可调用

我有工具,其中使用了一些继承的类.

这是我的第一个基于OOP的大工具,我对类初始化有点困惑.

下面有很多代码,使这个Q更加清晰.

短继承树:

- RDSmanager(object)
    - Options(RDSmanager)
    - AutoEnv(RDSmanager)
    - UnityXMLgenerator(RDSmanager)
Run Code Online (Sandbox Code Playgroud)

完全记录器类是:

class Logger(object):

    def __init__(self, rdsmanager_localpath):

        """Create Logger"""

        self.rdsmanager_localpath = rdsmanager_localpath

        if not os.path.isdir(os.path.join(self.rdsmanager_localpath, 'logs')):
            os.mkdir(os.path.join(self.rdsmanager_localpath, 'logs'))

    def logger(self, modname):

        self.logger = logging.getLogger(modname)

        formatter = logging.Formatter('%(asctime)s  - %(filename)s[LINE:%(lineno)d] - %(name)s.%(funcName)s() - %(message)s')

        self.logger.setLevel(logging.DEBUG)

        filehandler = logging.FileHandler(os.path.join(self.rdsmanager_localpath, 'logs', 'rdsmanager.log'))
        filehandler.setLevel(logging.DEBUG)
        filehandler.setFormatter(formatter)

        consolehandler = logging.StreamHandler()
        consolehandler.setLevel(logging.INFO)

        self.logger.addHandler(filehandler)
        self.logger.addHandler(consolehandler)
Run Code Online (Sandbox Code Playgroud)

主脚本RDSmanager.py包含:

from lib.local.rds_services import Logger
...

class RDSmanager(object):
    ...

    # path to current RDSmanager directory
    # used toi …
Run Code Online (Sandbox Code Playgroud)

python oop logging

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