标签: heredoc

将数组元素传递给 Heredoc

我试图将数组元素传递给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)

这可能吗?,我怎样才能做到这一点?

linux bash heredoc

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

Bash - &lt;&lt;EOF 和 &lt;&lt;'EOF' 之间的区别

GNU Bash - 3.6.6 Here 文档

[n]<<[-]word
        here-document
delimiter
Run Code Online (Sandbox Code Playgroud)

如果 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 heredoc

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

bash 脚本 - 在 cat 中使用和扩展变量

在我的 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 。

variables bash heredoc string-interpolation

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

创建后可以编辑Here文档吗?

如果我创建一个Here文档:

myheredoc = <<HTMLOUTPUT
<div>This is the div</div>
HTMLOUTPUT
Run Code Online (Sandbox Code Playgroud)

我可以使用'myheredoc'来操作此文档像常规字符串一样吗?

ruby heredoc

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

在PHP中使用<<< CON

以下代码有什么影响?

$page = <<<CON
<p><center>Blah blah blah</center></p>
CON;
Run Code Online (Sandbox Code Playgroud)

怎么<<<CON办?

php heredoc operators

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

Perl:基本问题,功能功能

这个功能有什么作用?

    sub MyDigit {
       return <<END;
       0030\t0039
       END
    }
Run Code Online (Sandbox Code Playgroud)

perl heredoc

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

<< - CONSTANT做什么?

return <<-HTML
  <li>
    <a href = "some-link">Link-Title</a>
  </li>
HTML
Run Code Online (Sandbox Code Playgroud)

什么是<< - 第一行的HTML和最后一行的HTML?

ruby syntax heredoc

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

HEREDOC回归意外结束

以下片段引起了

"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)

php heredoc

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

Heredoc <<<还是<<?

好吧,我想知道什么是正确的方法来做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)

哪种方法正确?我还是很吵,所以不知道.

或者我不应该依赖语法突出显示呃?:/

php syntax syntax-highlighting heredoc

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

如何从bash以root身份登录并执行操作

这是我简单的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)

linux bash logging heredoc spawn

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