小编Hen*_*eld的帖子

Bash:循环直到命令退出状态等于0

我在本地计算机上安装了netcat,在端口25565上运行了一个服务.使用命令:

nc 127.0.0.1 25565 < /dev/null; echo $?
Run Code Online (Sandbox Code Playgroud)

Netcat检查端口是否打开,如果打开则返回0,如果关闭则返回1.

我试图写一个bash脚本无休止地循环并每秒执行上面的命令,直到命令的输出等于0(端口打开).

即使在端口打开(1变为0)之后,我当前的脚本也会无休止地循环"...".

until [ "nc 127.0.0.1 25565 < /dev/null; echo $?" = "0" ]; do
         echo "..."
         sleep 1
     done
echo "The command output changed!"
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

linux bash loops netcat

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

通过SSH执行命令时无法使用别名

我在.bashrc中注释掉了这一行:

# [ -z "$PS1" ] && return
Run Code Online (Sandbox Code Playgroud)

现在别名被读取,但我仍然无法执行...:/

我们可以询问服务器是否已定义别名:

$ ssh server "cd /tmp && alias backup_tb"
alias backup_tb='pg_dump -U david tb > tb.sql'
Run Code Online (Sandbox Code Playgroud)

但它没有扩大:

$ ssh server "cd /tmp && backup_tb"
bash: backup_tb: command not found
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ssh bash

8
推荐指数
1
解决办法
6679
查看次数

cURL - - 摘要命令

请解释一下这个curl命令:

curl --digest \
    -u{username}:{password} \
    -v \
    -X PUT \
    -H 'Expect: ' \
    -H 'Content-type: application/xml' \
    -d @- \
    http://webapi.ebayclassifieds.com/webapi/partners/{username}/ads/{ext-reference-id} \
        < ad.xml 
Run Code Online (Sandbox Code Playgroud)

<符号是什么意思?

我的理解:

[--digest] its a digest authentication
[-u{username}:{password}] obviously username and password
[-X PUT] method="put"
[-H 'Expect: '] header = 'Expect: '
[-H 'Content-type: application/xml'] additional header
Run Code Online (Sandbox Code Playgroud)

这可能是我得不到的-d @ - url <ad.xml [-d @ - http://webapi.ebayclassifieds.com/webapi/partners/ {username}/ads/{ext-reference-id} <ad.xml]

我找到了什么:

-d, - data

(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按下提交按钮时浏览器一样.这将导致curl使用content-type application/x-www-form-urlencoded将数据传递到服务器.比较-F, - form.

-d, - data与--data-ascii相同.要纯数据二进制发布数据,您应该使用--data-binary选项.要对表单字段的值进行URL编码,您可以使用--data-urlencode.

如果在同一命令行中多次使用这些选项中的任何一个,则指定的数据将与分离&-symbol合并在一起.因此,使用'-d name = daniel -d …

curl

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

我应该将shell函数定义为函数x()还是x()?

我注意到有三种方法可以定义shell函数,我从来没有在任何地方看过它.

# Option 1
function log(){

}

# Option 2
log(){

}

# Option 3, added due to answers
function log{

}
Run Code Online (Sandbox Code Playgroud)

这三个定义之间有不同之处吗?他们的行为是不同的,还是只是外表?

是否应该使用哪种标准?我希望第一个选项更可取,因为我想它可以消除某些地方的模糊性.

提前致谢!

答案后编辑:投票结束为"基于意见"的人; 我询问了行为上的差异,而不仅仅是为什么人们认为我应该使用哪种行为.事实上,只有Bash支持一个,这意味着每个人都应该使用第二个选项.

bash shell sh

7
推荐指数
3
解决办法
245
查看次数

设计帮助:在Haskell中建模shell体验

我正在尝试使用Haskell进行虚拟shell体验.我的意思是,我的意思是创建一个程序,当从终端窗口执行时,将您带入一个环境,允许您执行熟悉的命令的子集(例如,cdmkdir)等.

文件系统将完全是虚拟的,因为它不会触及磁盘上的任何内容.

我的初始草图(下图)感觉很笨,事实上,组成一个MWE是一个拖累,我非常不习惯在功能上表示数据结构,并希望得到一些关于如何扭转这种体验的指针.任何有可用源代码的参考程序都会有所帮助,任何提示或思路都会有所帮助.

我写了以下内容

import qualified Data.Map as Map
import qualified Data.Either as Either

type Name = String
type Content = String
type Error = String

data DiskEntry = File Name Content
               | Directory {name :: Name
                 , entries :: Map.Map String DiskEntry
                 } deriving (Show)


-- | The 'mkdir' function creates a new directory inside the given
-- directory.  Attempts to create a 'DiskEntry' with the name 'name'
-- inside the given 'directory'. If an …
Run Code Online (Sandbox Code Playgroud)

shell haskell

7
推荐指数
0
解决办法
138
查看次数

当源自另一个时,ksh脚本如何确定自身的完整路径?

当脚本由ksh提供时,脚本如何确定它的路径?即

$ ksh ". foo.sh"
Run Code Online (Sandbox Code Playgroud)

我已经看到在BASH上发布的非常好的方法在stackoverflow和其他地方发布但尚未找到ksh方法.

使用"$ 0"不起作用.这只是指"ksh".

更新:我尝试使用"history"命令,但是不知道当前脚本之外的历史记录.

$ cat k.ksh
#!/bin/ksh
. j.ksh
$ cat j.ksh
#!/bin/ksh
a=$(history | tail -1)
echo $a
$ ./k.ksh
270 ./k.ksh
Run Code Online (Sandbox Code Playgroud)

我希望它回显"*./j.ksh".

ksh

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

Magento:可以从shell ssh运行导出配置文件

我正试图从Magento出口18,0000种产品,但它却陷入困境

 Warning: Please do not close the window during importing/exporting data
Run Code Online (Sandbox Code Playgroud)

阶段.

我发现可以通过使用快速重新索引这么多产品 php indexer.php --reindex <code>

是否可以使用类似强制导出所有产品的东西,或者通过其id运行数据流配置文件?

php export magento

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

尝试通过 SSH 连接到系统时出现延迟

当我尝试从我的系统 ssh 到朋友的系统时,我面临大约 5-6 秒的延迟。这是命令的详细输出:

zeus@athena:~$ ssh -v ashwin@192.168.40.211
OpenSSH_5.3p1 Debian-3ubuntu7, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug1: Connecting to 192.168.40.211 [192.168.40.211] port 22.
debug1: Connection established.
debug1: identity file /home/zeus/.ssh/identity type -1
debug1: identity file /home/zeus/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/zeus/.ssh/id_dsa type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_6.0p1 Debian-3ubuntu1
debug1: match: OpenSSH_6.0p1 Debian-3ubuntu1 pat OpenSSH* …
Run Code Online (Sandbox Code Playgroud)

ssh bash openssh

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

如何将目录从一个 Jenkins 工作工作区复制到另一个?

我想将一个完整的目录(包含所有子目录)从作业a的工作区复制到另一个作业b的工作区。

我尝试使用工件,但找不到复制所有子目录的方法,并且没有保留目录结构的选项。

jenkins

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

Python mysql不提交

与其他编程/脚本语言一起工作后,我完全被Python的mysql接口所困扰(我对Python有点陌生),我无法提交更改。我已将代码剥离到最低限度:

#!/usr/bin/python

import mysql.connector as mariadb

mariadb_connection = mariadb.connect(
    user='testdb', 
    password='testdb',
    database='testdb',
    host='127.0.0.1',
    autocommit=True
)
mariadb_connection.autocommit=True
cursor = mariadb_connection.cursor(buffered=True)
cursor.execute( "UPDATE testdb SET descr='konijn' WHERE number=14549")
mariadb_connection.commit()
mariadb_connection.close()
Run Code Online (Sandbox Code Playgroud)

我本以为自动提交会成功,但事实并非如此。此外,mariadb_connection.commit()也不会执行任何更改。该数据库(相关程度最高):

    number      INTEGER,
    type        VARCHAR(255),
    file        VARCHAR(255),
    year        INTEGER,
    month       INTEGER,
    descr       VARCHAR(4096)
Run Code Online (Sandbox Code Playgroud)

我能够使用TCL / Tk使用相同的凭据来提交更改,因此这应该不是权限问题。

我究竟做错了什么?

python mysql

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

标签 统计

bash ×4

shell ×2

ssh ×2

curl ×1

export ×1

haskell ×1

jenkins ×1

ksh ×1

linux ×1

loops ×1

magento ×1

mysql ×1

netcat ×1

openssh ×1

php ×1

python ×1

sh ×1