我试图将数组元素传递给heredoc,目标是生成一个文件,例如:
declare -a box=("element1" "element2" "element3")
cat > test.txt <<-EOF
some text, insert first element
some text, insert second element
some text, insert third element
EOF
Run Code Online (Sandbox Code Playgroud)
这可能吗?,我怎样才能做到这一点?
Run Code Online (Sandbox Code Playgroud)[n]<<[-]word here-document delimiter如果 word 的任何部分被引用,则分隔符是对 word 引用删除的结果,并且 here-document 中的行不会被扩展。如果word不加引号,则here-document的所有行都进行参数扩展、命令替换和算术扩展,字符序列\newline被忽略,并且必须使用'\'来引用字符'\'、'$ ' 和 '`'。
如果我单引号 EOF,它的工作原理。我认为是因为要调用的bash /bin/bash进程获取未扩展的字符串,然后被调用的进程解释这些行。
$ /bin/bash<<'EOF'
#!/bin/bash
echo $BASH_VERSION
EOF
3.2.57(1)-release
Run Code Online (Sandbox Code Playgroud)
但是,以下内容导致错误。我认为 BASH_VERSION 会被扩展,当前 bash 进程的版本被传递给/bin/bash进程被调用。但不工作。
$ /bin/bash<<EOF
#!/bin/bash
echo $BASH_VERSION
EOF
/bin/bash: line 2: syntax error near unexpected token `('
/bin/bash: line 2: `echo 5.0.17(1)-release'
Run Code Online (Sandbox Code Playgroud) 在我的 bash 脚本中,我有这个:
myapphome=/home/username/Documents/myapp
cat << 'EOT' > "$myapphome"/some.properties
dir.root="$myapphome"/app_data
EOT
Run Code Online (Sandbox Code Playgroud)
预期在 some.properties 中:
dir.root=/home/username/Documents/myapp/app_data
Run Code Online (Sandbox Code Playgroud)
但实际上是这样的:
dir.root="$myapphome"/app_data
Run Code Online (Sandbox Code Playgroud)
我在这里做错了什么?我的意思是我想在我的 some.properties 文件中扩展 $myapphome 。
如果我创建一个Here文档:
myheredoc = <<HTMLOUTPUT
<div>This is the div</div>
HTMLOUTPUT
Run Code Online (Sandbox Code Playgroud)
我可以使用'myheredoc'来操作此文档像常规字符串一样吗?
以下代码有什么影响?
$page = <<<CON
<p><center>Blah blah blah</center></p>
CON;
Run Code Online (Sandbox Code Playgroud)
怎么<<<CON办?
return <<-HTML
<li>
<a href = "some-link">Link-Title</a>
</li>
HTML
Run Code Online (Sandbox Code Playgroud)
什么是<< - 第一行的HTML和最后一行的HTML?
以下片段引起了
"PHP Parse错误:语法错误,/ Applications/MAMP/htdocs3/nettuts/PHP/PDO for Database Access/htdocs/view_users02.php第39行意外结束"
我环顾了网站和谷歌,但没有找到确切的解决方案.
foreach($DBH->query($sql) as $row){
$output = "<tr><td align='left'>" . $row["name"] . "</td><td align='left'>" . $row["dr"] . "</td></tr>";
// echo '<tr><td align="left">' . $row['name'] . '</td><td align="left">' . $row['dr'] . '</td></tr>';
echo <<<EOT
$output
EOT;
Run Code Online (Sandbox Code Playgroud)
完整的脚本
<?php
$page_title = 'View the Current Users';
include ('includes/header.html');
// Page header:
echo '<h1>Registered Users</h1>';
require_once ('../mysql_pdo_connect.php'); // Connect to the db.
// Make the query:
$sql = "SELECT CONCAT(last_name, ', ', first_name) AS name, DATE_FORMAT(registration_date, '%M %d, …Run Code Online (Sandbox Code Playgroud) 好吧,我想知道什么是正确的方法来做Heredoc语法?
在我的代码编辑器中,"电子文本编辑器" <<<完全抛弃了语法高亮.

而做<<而不是.

码:
private function buildDB() {
// build database
$sql = <<<MySQL_QUERY
CREATE TABLE IF NOT EXISTS testDB (
title VARCHAR(150),
bodytext TEXT,
created VARCHAR(100);
)
MYSQL_QUERY;
return mysql_query($sql);
}
Run Code Online (Sandbox Code Playgroud)
哪种方法正确?我还是很吵,所以不知道.
或者我不应该依赖语法突出显示呃?:/
这是我简单的bash:
cat test.sh
#!/bin/bash
echo "hello"
su - root -c /path/to/script.sh <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
./test.sh
hello
su: must be run from a terminal
<current-user>
good bye
Run Code Online (Sandbox Code Playgroud)
(要么)
cat test2.sh
#!/bin/bash
echo "hello"
sudo su <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
又一次错误
(要么)
cat test3.sh
#!/bin/bash
echo "hello"
su root <<EOF
password
EOF
whoami
echo "good bye"
Run Code Online (Sandbox Code Playgroud)
再次出错......
当我尝试:
#!/bin/bash
echo "hello"
sudo -s <<EOF
<password>
echo Now I am root
id
echo "yes!"
EOF …Run Code Online (Sandbox Code Playgroud)