在我的shell脚本中,我使用heredoc块来动态创建文件.什么是python等价物?
cat > myserver.pem << "heredoc"
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAnTsiYssvsuM1DRjyhqD8+ZB8ESqUFHgzeBYONp3yqjK8ICw/LRrxjXGXidAW
aPBXfktv3zN/kFsLMEFJKrJs/TLCfXG1CwFHMZzJRLM4aE6E0j6j+KF96cY5rfAo82rvP5kQdTIm
-----END RSA PRIVATE KEY-----
heredoc
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个简单的解决方案.我非常喜欢上面的shell脚本代码.我可以在python中"按原样"使用它吗?
我有一个应该在后台运行的脚本.我一打运行bash就必须回答一个问题.我怎么能这样做?
(nohup python script.py lst '<<HERE yes HERE' &)
Run Code Online (Sandbox Code Playgroud) 我想知道你是否可以在heredocs中有条件语句,这是我的脚本,但它deosnt正确解析$ username?
php代码:
function doSomething($username) {
if (isset($_SESSION['u_name'])){
$reply ='<a class ="reply" href="viewtopic.php?replyto=@$username.&status_id=$id&reply_name=$username"> reply </a>';
return <<<ENDOFRETURN
$reply
ENDOFRETURN;
Run Code Online (Sandbox Code Playgroud)
这个问题是在html上呈现的$ username变量deosnt.它仍然是$ username :))谢谢
我一直在尝试使用Here-documents但它不起作用.可能有什么问题?我错过了一些明显的东西吗
这是我正在尝试运行的文件的全部内容(在任何地方都没有空格或标签):
print<<EOF;
text
EOF
Run Code Online (Sandbox Code Playgroud)
我通过将它保存在记事本或记事本++中作为一个名为3.pl的文件来运行它
然后进入Windows 7下的DOS窗口并键入:perl 3.pl
我收到此消息:
在3.pl第1行的EOF之前的任何地方都找不到字符串终止符"EOF".
我试图弄清楚如何<<<HTML在php中使用时使用已定义的变量.这是我想要实现的一个例子:
<?php
define('TEST','This is a test');
echo <<<HTML
Defined: {TEST}
HTML;
?>
Run Code Online (Sandbox Code Playgroud)
获取定义的"TEST"的适当方法是<<<HTML什么?
编辑:
我做了一个小测试来检查哪一种方法最快.对于我的测试,我在heredoc中使用了20个变量.以下是使用不同方法(以秒为单位)发生的事情:
访问<<< HTML in php中的定义变量似乎是最慢的方法 - 0.00216103.
访问<<< HTML in php中的定义变量更快 - 0.00073290.
访问<<< HTML in php中的定义变量甚至更快 - 0.00052595.
访问<<< HTML in php中的定义变量是最快的 - 0.00011110.
希望这有助于别人:)
long_string = <<EOS
It was the best of times,
It was the worst of times.
EOS
Run Code Online (Sandbox Code Playgroud)
返回53.为什么?空白有多重要?即便如此.我们怎么得到53?
这个怎么样?
def test_flexible_quotes_can_handle_multiple_lines
long_string = %{
It was the best of times,
It was the worst of times.
}
assert_equal 54, long_string.size
end
def test_here_documents_can_also_handle_multiple_lines
long_string = <<EOS
It was the best of times,
It was the worst of times.
EOS
assert_equal 53, long_string.size
end
Run Code Online (Sandbox Code Playgroud)
是这种情况,因为%{case将每个/n字符统计为一个字符,并且在第一行之前认为是一个字符,一个在结尾处,然后在第二行结尾处,而在这种EOS情况下只有一个在第一行之前线和一线后一线?换句话说,为什么前者54和后者53?
我想要一个可以从文件或标准输入获取输入的Bash脚本,grep例如,非常类似
$ cat hw.txt
Hello world
$ grep wor hw.txt
Hello world
$ echo 'Hello world' | grep wor
Hello world
$ grep wor <<< 'Hello world'
Hello world
Run Code Online (Sandbox Code Playgroud)
一切都很美妙.但是使用以下脚本
read b < "${1-/dev/stdin}"
echo $b
Run Code Online (Sandbox Code Playgroud)
如果使用herestring它会失败
$ hw.sh hw.txt
Hello world
$ echo 'Hello world' | hw.sh
Hello world
$ hw.sh <<< 'Hello world'
/opt/a/hw.sh: line 1: /dev/stdin: No such file or directory
Run Code Online (Sandbox Code Playgroud) 当我尝试
cat > myfile << EOF
TEST TEXT
EOF
Run Code Online (Sandbox Code Playgroud)
我只是得到一个空文件。使用echo命令相同。这是怎么回事?我只能考虑.zshenv配置文件中的一些冲突,但我不知道它可能是什么......
我正在使用zsh 4.3.6 (x86_64-suse-linux-gnu).
我基本上试图让Flask-migrate的shell使用Flask应用程序上下文执行heredoc
下面是我试图在我的bash脚本中运行的命令
$ docker exec -it mycontainer ./manage shell <<-EOF
# shell commands to be executed
EOF
Run Code Online (Sandbox Code Playgroud)
当我尝试执行上述命令时,我得到:
cannot enable tty mode on non tty input
这是管理文件:
#!/usr/bin/env python
from middleware import create_app, config
from middleware.models import db
from flask.ext.script import Manager
from flask.ext.migrate import Migrate, MigrateCommand
app = create_app(config)
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
Run Code Online (Sandbox Code Playgroud)
我的问题是有一种方法可以将像heredoc这样的命令传递给shell吗?