小编tri*_*eee的帖子

在Bash while循环中使用"和"

好的,基本上这就是脚本的样子:

echo -n "Guess my number: "
read guess

while [ $guess != 5 ]; do
echo Your answer is $guess. This is incorrect. Please try again.
echo -n "What is your guess? "
read guess
done

echo "That's correct! The answer was $guess!"
Run Code Online (Sandbox Code Playgroud)

我要改变的是这一行:

while [ $guess != 5 ]; do
Run Code Online (Sandbox Code Playgroud)

对于这样的事情:

while [ $guess != 5 and $guess != 10 ]; do
Run Code Online (Sandbox Code Playgroud)

在Java中我知道"和"是"&&"但这似乎不适用于此.我是否使用while循环以正确的方式进行此操作?

编辑:更新的问题,使其在搜索中更有用..

linux bash

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

Python中的单独部分

我想知道是否有最佳实践来分离Python中的代码块.例如,在MATLAB中,两个注释符号(%%)创建一个代码段.目前,我正在做:

####
## Import libraries
####

import _mssql #Binary here: http://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql

####
## Connect to db + Query the data
####

q_file = open ("query.txt", "r")
query = q_file.read().replace('\n', '')

##Connect to the database
conn = _mssql.connect(server='', user='',
                      password='', database='')

##Query the database
conn.execute_query(query)
for row in conn:
    print(row)

####
## Data filtering
####

[...]
Run Code Online (Sandbox Code Playgroud)

python

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

启动时最大化Emacs?(不是全屏)

在Emacs启动以最大化窗口之后,按下alt-f10(在GNU/Linux中)是很常见的(在Emacs术语中,它实际上是一个帧).我大部分时间都按三次因为我太早了按第一个alt-f10,这会使迷你缓冲区周围出现一些垃圾(Emacs显示bug?)

我该如何自动化这个呢?(也许使用Gnome设置或使用elisp?)

我正在使用emacs24(来自bzr repo).

请注意,这不是我想要的常规全屏,按f11即可获得.

emacs elisp

21
推荐指数
4
解决办法
8946
查看次数

使用bash在文本文件中提取2个标记之间的行

我有一个文本文件,如下所示:

random useless text 
<!-- this is token 1 --> 
para1 
para2 
para3 
<!-- this is token 2 --> 
random useless text again
Run Code Online (Sandbox Code Playgroud)

我想在令牌之间提取文本(当然不包括令牌).我尝试使用##和%%来提取数据,但它不起作用.我认为它不适用于操纵如此大的文本文件.有什么建议我怎么做?也许awk或sed?

bash

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

为什么要创建一个别名来创建函数?

我偶尔会看到这种模式,尤其是在有关Bash提示自定义的问题上。

alias f='_ () { useful code; }; _'
Run Code Online (Sandbox Code Playgroud)

我完全没有理由在此处创建别名。明显的重构

f () { useful code; }
Run Code Online (Sandbox Code Playgroud)

这样就避免了完全声明一个别名,而只是简单地一劳永逸地定义了函数,这看起来更简单,更易理解,不那么脆弱且更高效。(以防万一,每次调用别名时,别名最终都会重新声明该函数。)

例如,使Bash别名带有参数?有几个答案可以证明这种技术。使用ftp路径运行lftp的bash脚本是一个有关此函数内部实际功能的问题,其中包含类似这样的代码,尽管我轻描淡写,OP也不解释为什么。

这是否仅仅是一种反模式,还是有实际的理由这样做?在什么情况下该设计有意义?

这与别名后面没有空格有关,也与代码混淆无关(除了这种神秘的技术之外,我发现的示例通常是完全可读的)。

bash shell alias sh

20
推荐指数
3
解决办法
436
查看次数

jq:嵌套对象,提取顶级id并从内部对象中提取值

鉴于以下内容xample.json;

[
 {
  "id": 12345678,
  "stuff": { "book": "shelf", "hook": "line", "took": "off", "info-spec": 12 },
  "votes": 23
 },
 {
  "id": 12345679,
  "stuff": { "book": "maker", "hook": "sinker", "took": "pisin", "info-spec": 23 },
  "votes": 1
 }
]
Run Code Online (Sandbox Code Playgroud)

我可以提取idvotes容易:

$ jq '.[] | { id, votes }' xample.json
{
  "votes": 23,
  "id": 12345678
}
{
  "votes": 1,
  "id": 12345679
}
Run Code Online (Sandbox Code Playgroud)

但是,将查询模样提取idstuff.info-spec?显而易见的(对我来说)语法根本不起作用:

$ jq '.[] | { id, stuff.info-spec }' xample.json
error: …
Run Code Online (Sandbox Code Playgroud)

bash json jq

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

shell-init:错误检索当前目录:getcwd - 通常的修复程序不工作

我有一个简单的脚本:

#!/bin/bash
for server in $(~/.ansible/ansible_hosts)
do
    ssh $server "hostname; readlink /opt/mydir/mylink;"
done
Run Code Online (Sandbox Code Playgroud)

它工作正常 - 程序返回正确的主机名和链接 - 除了我在一些但不是所有服务器上收到以下错误:

shell-init:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录

所有目录都存在.最常见的建议之一是添加cd,cd - 或cd /.添加该步骤时发生的所有情况都是额外的:

chdir:检索当前目录时出错:getcwd:无法访问父目录:没有这样的文件或目录

我尝试启动nfs守护进程,因为我的homedir存在一些混乱,并且如果问题是/ opt,则替换/etc/init.d.没有不同

这只会是一个烦恼,除了当我尝试使用ansible playbook而不是简单的ssh命令时,它对于该服务器来说是失败的.

任何见解都会受到赞赏.

linux ssh bash shell ansible

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

将命令作为输入传递给另一个命令(su,ssh,sh等)

我有一个脚本,我需要启动一个命令,然后将一些额外的命令作为命令传递给该命令.我试过了

su
echo I should be root now:
who am I
exit
echo done.
Run Code Online (Sandbox Code Playgroud)

...但它不起作用:su成功,但命令提示符只是盯着我.如果键入exit的提示,echowho am i等开始执行!而且echo done.根本没有执行.

同样,我需要这个工作ssh:

ssh remotehost
# this should run under my account on remotehost
su
## this should run as root on remotehost
whoami
exit
## back
exit
# back
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

我正在寻找能够以一般方式解决这个问题的答案,这些答案并非特定于sussh特别是.目的是使这个问题成为这种特定模式的规范.

unix ssh bash shell sh

19
推荐指数
3
解决办法
6119
查看次数

我们如何在Perl中创建唯一ID

我想创建一个UniqueId.有没有我可以调用的函数,这样每次当我使用它时它会给我一个新的Id,总是有不同的值?

perl perl-module

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

re.findall('(ab|cd)', string) vs re.findall('(ab|cd)+', string)

在 Python 正则表达式中,我遇到了这个奇异的问题。你能说明re.findall('(ab|cd)', string)和之间的区别re.findall('(ab|cd)+', string)吗?

import re

string = 'abcdla'
result = re.findall('(ab|cd)', string)
result2 = re.findall('(ab|cd)+', string)
print(result)
print(result2)
Run Code Online (Sandbox Code Playgroud)

实际输出为:

['ab', 'cd']
['cd']
Run Code Online (Sandbox Code Playgroud)

我很困惑为什么第二个结果也不包含'ab'

python regex

18
推荐指数
2
解决办法
778
查看次数

标签 统计

bash ×6

shell ×3

linux ×2

python ×2

sh ×2

ssh ×2

alias ×1

ansible ×1

elisp ×1

emacs ×1

jq ×1

json ×1

perl ×1

perl-module ×1

regex ×1

unix ×1