如何使用子进程运行此命令?
我试过了:
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)
我注意到的事情:
我正在使用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) 我有一个共享托管服务器的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) 我有一个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中运行,并且应该可以在不同的机器上移植.任何解决方案 我也非常感谢与某些文档的链接,这些文档解释了为什么或如何发生这种情况.
我需要在批量文本文件中添加一个空格键
然而以下的剂量工作
ECHO >C:\txt.txt
Run Code Online (Sandbox Code Playgroud)
这产生了文本Echo是(关闭)而不是???
正在批量播放Windows
我在工作中回到了很多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) 在我的shell脚本中,我有以下代码
echo * | tr ' ' '\n'
Run Code Online (Sandbox Code Playgroud)
在这里,我注意到虽然我使用*,但是它正在跳过隐藏文件(.*)之后我尝试了一个明显的改变
echo .* | tr ' ' '\n'
Run Code Online (Sandbox Code Playgroud)
这解决了我的隐藏文件问题.但我对这种奇怪的行为感到好奇*
因为.*是*
的理想输出的子集
echo* - >所有文件包括隐藏文件
echo.* - >所有隐藏文件
echo [^.]* - >所有非隐藏文件(当前为echo*)
因此echo*表现得像echo [^.]*
如何使用echo获取包括隐藏文件在内的整个文件列表.类似的是ls和dir的输出,尽管ls -a给出了理想的输出
下午早些时候,我曾要求解决如何在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) 我正在尝试-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或发送日志到不同的文件,而不是我正在尝试处理的情况.任何帮助或指针将不胜感激.干杯!!
我想以这种方式打印我从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
这很奇怪