标签: echo

Python - 子进程 - 如何在Windows中调用Piped命令?

如何使用子进程运行此命令?

我试过了:

proc = subprocess.Popen(
    '''ECHO bosco|"C:\Program Files\GNU\GnuPG\gpg.exe" --batch --passphrase-fd 0 --output "c:\docume~1\usi\locals~1\temp\tmptlbxka.txt" --decrypt "test.txt.gpg"''',
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
   stderr=subprocess.STDOUT,
)
stdout_value, stderr_value = proc.communicate()
Run Code Online (Sandbox Code Playgroud)

但得到了:

Traceback (most recent call last):
...
  File "C:\Python24\lib\subprocess.py", line 542, in __init__
    errread, errwrite)
  File "C:\Python24\lib\subprocess.py", line 706, in _execute_child
    startupinfo)
WindowsError: [Errno 2] The system cannot find the file specified
Run Code Online (Sandbox Code Playgroud)

我注意到的事情:

  1. 在Windows控制台上运行该命令工作正常.
  2. 如果我删除ECHO bosco | 部分,它在上面的popen调用运行良好.所以我认为这个问题与echo或|有关.

python subprocess pipe popen echo

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

从echo回来

我正在使用echo输出的一些函数.但我需要他们,return所以我可以在PHP中使用它们.

这是有效的(似乎毫无障碍),但我想知道,有更好的方法吗?

    function getEcho( $function ) {
        $getEcho = '';
        ob_start();
        $function;
        $getEcho = ob_get_clean();
        return $getEcho;
    }
Run Code Online (Sandbox Code Playgroud)

例:

    //some echo function
    function myEcho() {
        echo '1';
    }

    //use getEcho to store echo as variable
    $myvar = getEcho(myEcho());      // '1'
Run Code Online (Sandbox Code Playgroud)

php return output-buffering echo

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

将多行回显到文件中

我有一个共享托管服务器的httpd.conf文件,我有一个任务是将每个虚拟主机迁移到vps.使用awk我为特定站点提取了一个虚拟主机条目块.并将该条目存储在变量中.但是当我回显变量的输出来附加vps服务器的httpd.conf时,它给出了一个错误

bash:命令替换:第1行:意外令牌newline' bash: command substitution: line 1:回显附近的语法错误'

任何人都可以通过回显一个具有多行的变量来判断附加简单文本文件的确切方法.

我期望的脚本如下:

#!/usr/bin/expect 
set remote_ip [lindex $argv 0] 
set username [lindex $argv 1] 
set remote_command [lindex $argv 2] 
foreach {remote_ip username remote_command} $argv {break} 
spawn ssh -o "StrictHostKeyChecking no" root@$remote_ip `echo $remote_command >> /etc/httpd/conf/httpd.conf`
expect "*assword: " 
send "redhat\r" 
interact 
Run Code Online (Sandbox Code Playgroud)

变量"remote_command"包含虚拟主机条目的模式.使用printf但仍存在同样的问题. -


我的remote_command包含以下值

<VirtualHost>
DirectoryIndex index.php
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

它仍然给出相同的错误.我使用了""引号,但它适用于单行,而不适用于多行.

我的主脚本script.sh包含行

#!/bin/bash
some code .....
some code......
some code ......
echo "<VirtualHost $D_IPADDRESS>" > /opt/remotehttpd_conf
awk "p && /\/VirtualHost/{exit} /$SITENAME/{p=1}p" /opt/httpd.conf >> /opt/remotehttpd_conf …
Run Code Online (Sandbox Code Playgroud)

bash echo

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

echo -e反斜杠转义在sh中没有得到尊重

我有一个shell脚本,我希望在不同的Linux服务器上运行.当我使用-e选项运行echo命令并在字符串中转义字符时,它在Ubuntu 12.04或Ubuntu 11.04上的sh shell上没有按预期执行.我们正在使用的两个服务器,我希望脚本可以运行CentOS 5.3和Ubuntu 12.04.当我在两个服务器上的bash中运行以下命令时,会产生预期的输出:

$ echo -e "line1\nline2"
line1
line2
Run Code Online (Sandbox Code Playgroud)

当我在CentOS机器上运行相同的命令时,也会产生正确的输出.但是当我在Ubuntu 12.04或11.04上运行命令时,会产生以下输出:

$ echo -e "line1\nline2"
-e line1
line2
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我在Ubuntu上运行以下内容,它会自动解释转义字符.

$ echo "line1\nline2"
line1
line2
Run Code Online (Sandbox Code Playgroud)

该脚本需要在sh shell中运行,并且应该可以在不同的机器上移植.任何解决方案 我也非常感谢与某些文档的链接,这些文档解释了为什么或如何发生这种情况.

bash ubuntu centos sh echo

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

如何使用批处理将单个空格键写入txt文件

我需要在批量文本文件中添加一个空格键

然而以下的剂量工作

ECHO  >C:\txt.txt
Run Code Online (Sandbox Code Playgroud)

这产生了文本Echo是(关闭)而不是???

正在批量播放Windows

batch-file echo

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

可以在不使用echo或全局变量的情况下从Bash函数返回字符串吗?

我在工作中回到了很多Bash脚本,我生锈了.

有没有办法从函数返回本地值字符串而不使其全局或使用echo?我希望函数能够通过屏幕与用户交互,但也可以将返回值传递给变量而不需要像export return_value="return string".printf命令似乎完全像echo一样响应.

例如:

function myfunc() {
    [somecommand] "This appears only on the screen"
    echo "Return string"
}

# return_value=$(myfunc)
This appears only on the screen

# echo $return_value
Return string
Run Code Online (Sandbox Code Playgroud)

bash interactive return function echo

5
推荐指数
3
解决办法
3557
查看次数

shell脚本中wildcharacter*的奇怪行为

在我的shell脚本中,我有以下代码

echo * | tr ' ' '\n'
Run Code Online (Sandbox Code Playgroud)

在这里,我注意到虽然我使用*,但是它正在跳过隐藏文件(.*)之后我尝试了一个明显的改变

echo .* | tr ' ' '\n'
Run Code Online (Sandbox Code Playgroud)

这解决了我的隐藏文件问题.但我对这种奇怪的行为感到好奇*

因为.*是*
的理想输出的子集

  1. echo* - >所有文件包括隐藏文件

  2. echo.* - >所有隐藏文件

  3. echo [^.]* - >所有非隐藏文件(当前为echo*)

因此echo*表现得像echo [^.]*

如何使用echo获取包括隐藏文件在内的整个文件列表.类似的是ls和dir的输出,尽管ls -a给出了理想的输出

bash shell zsh wildcard echo

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

'1'数字出现在wordpress网站的侧边栏下

下午早些时候,我曾要求解决如何在Wordpress的不同类别页面上回应不同侧边栏的问题.现在我面临的问题是在所有类别页面的侧栏下面都会显示一个连续的"1".但是,当我切换回在所有类别页面上只显示一个侧边栏的旧代码时,就不会发生这种情况.这是最初在sidebar.php文件中的代码,它在所有页面上只回显一个侧边栏:

<?php  if ( is_active_sidebar( 'main_sidebar' ) ) :  ?>

     <div id="main_sidebar" class="widget-area">
               <?php dynamic_sidebar( 'main_sidebar' ); ?>
     </div><!-- #first_sidebar .widget-area -->

<?php endif; ?>
Run Code Online (Sandbox Code Playgroud)

这是我在sidebar.php文件中放置的修改后的代码,该文件在不同的类别页面上回显不同的侧边栏:

<?php  if ( is_active_sidebar( "main_sidebar" ) ) :  ?>

     <div id="main_sidebar" class="widget-area">
               <?php
               if ( is_category( '7' )) {
               echo dynamic_sidebar( 'category_fashion' );
               }
               elseif ( is_category( '1' )) {
               echo dynamic_sidebar( 'category_music' );
               }
               elseif ( is_category( '5' )) {
               echo dynamic_sidebar( 'category_tastemakers' );
               }
               elseif ( is_category( '11' )) {
               echo dynamic_sidebar( …
Run Code Online (Sandbox Code Playgroud)

php wordpress function echo categories

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

在屏幕上打印消息并同时发送到syslog

我正在尝试-s在我的脚本中实现(即静默)选项 - 当给出错误/信息等时,将发送到syslog,否则在屏幕上打印并同时发送到syslog.这就是我正在做的事情:

echo -e "This Is a Test Message\nWell, not really!!"  2>&1 | logger
Run Code Online (Sandbox Code Playgroud)

echo消息发送到syslog(不在屏幕上打印),但不能只是弄清楚如何同时做两者.我看到人们只谈论在屏幕上打印时记录syslog或发送日志到不同的文件,而不是我正在尝试处理的情况.任何帮助或指针将不胜感激.干杯!!

linux bash logging syslog echo

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

Shell脚本奇怪的回声行为

我想以这种方式打印我从Array拆分中获得的内容:

string="abc test;ABCtest.it"

IFS=';' read -a array <<< "$string"
name="${array[0]}"
url="${array[1]}"

echo -ne "\n$url,$name" >> "$outputDir/$fileName"
Run Code Online (Sandbox Code Playgroud)

但输出文件不包含url部分

我认为问题是"." 但我不知道如何解决它

如果我试试这个

echo $url
Run Code Online (Sandbox Code Playgroud)

这是工作!

谢谢


我也试过printf和硬编码的文件名,但没有!

printf '%s %s\n' "$url" "$name"  >> test.txt
Run Code Online (Sandbox Code Playgroud)

似乎当我尝试在变量$ url之后连接另一个东西时,变量的某些部分被删除或覆盖到输出文件中

例如,如果我尝试这个

printf '%s %s\n' "$url" "pp"  >> test.txt
Run Code Online (Sandbox Code Playgroud)

我用简单的cat test.txt得到的是:

 pptest.it
Run Code Online (Sandbox Code Playgroud)

但变量$ url的内容必须是ABCTest.it

这很奇怪

bash echo

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