好的,基本上这就是脚本的样子:
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循环以正确的方式进行此操作?
编辑:更新的问题,使其在搜索中更有用..
我想知道是否有最佳实践来分离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) 在Emacs启动以最大化窗口之后,按下alt-f10(在GNU/Linux中)是很常见的(在Emacs术语中,它实际上是一个帧).我大部分时间都按三次因为我太早了按第一个alt-f10,这会使迷你缓冲区周围出现一些垃圾(Emacs显示bug?)
我该如何自动化这个呢?(也许使用Gnome设置或使用elisp?)
我正在使用emacs24(来自bzr repo).
请注意,这不是我想要的常规全屏,按f11即可获得.
我有一个文本文件,如下所示:
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提示自定义的问题上。
alias f='_ () { useful code; }; _'
Run Code Online (Sandbox Code Playgroud)
我完全没有理由在此处创建别名。明显的重构
f () { useful code; }
Run Code Online (Sandbox Code Playgroud)
这样就避免了完全声明一个别名,而只是简单地一劳永逸地定义了函数,这看起来更简单,更易理解,不那么脆弱且更高效。(以防万一,每次调用别名时,别名最终都会重新声明该函数。)
例如,使Bash别名带有参数?有几个答案可以证明这种技术。使用ftp路径运行lftp的bash脚本是一个有关此函数内部实际功能的问题,其中包含类似这样的代码,尽管我轻描淡写,OP也不解释为什么。
这是否仅仅是一种反模式,还是有实际的理由这样做?在什么情况下该设计有意义?
这与别名后面没有空格有关,也与代码混淆无关(除了这种神秘的技术之外,我发现的示例通常是完全可读的)。
鉴于以下内容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)
我可以提取id和votes容易:
$ jq '.[] | { id, votes }' xample.json
{
"votes": 23,
"id": 12345678
}
{
"votes": 1,
"id": 12345679
}
Run Code Online (Sandbox Code Playgroud)
但是,将查询模样提取id和stuff.info-spec?显而易见的(对我来说)语法根本不起作用:
$ jq '.[] | { id, stuff.info-spec }' xample.json
error: …Run Code Online (Sandbox Code Playgroud) 我有一个简单的脚本:
#!/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命令时,它对于该服务器来说是失败的.
任何见解都会受到赞赏.
我有一个脚本,我需要启动一个命令,然后将一些额外的命令作为命令传递给该命令.我试过了
su
echo I should be root now:
who am I
exit
echo done.
Run Code Online (Sandbox Code Playgroud)
...但它不起作用:su成功,但命令提示符只是盯着我.如果键入exit的提示,echo和who 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)
我该如何解决这个问题?
我正在寻找能够以一般方式解决这个问题的答案,这些答案并非特定于
su或ssh特别是.目的是使这个问题成为这种特定模式的规范.
我想创建一个UniqueId.有没有我可以调用的函数,这样每次当我使用它时它会给我一个新的Id,总是有不同的值?
在 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'?