【问题标题】:MAC OS X Terminal force print f to ignore some variablesMAC OS X 终端强制打印 f 忽略一些变量
【发布时间】:2017-12-08 10:12:37
【问题描述】:

我在 MAC OS X 终端上遇到了 printf 功能的问题。 我已经声明了一个变量,当我调用它时,它可以工作。问题如下:

在文本中,我有一些以“$”开头但属于另一个系统的变量。我只想将它们打印在我以这种方式创建的文件($foo)上,而不需要 bash 尝试将它们作为自己的变量读取。我得到的结果是一个空字符串。

我有以下代码(虚拟代码):

echo "Type the wished folder name followed by [ENTER]:"

read baseName

echo '' > ext_emconf.php

printf " $VARIABLE[$ANOTHERVARIABLE] = [
'title' => '%s - Templates'
]; 
" $basename> ext_emconf.php 

在用户给出例如“亚马逊”之后,我得到的结果是这样的:

[] = [
    'title' => 'Amazon - Templates'
];

虽然我期待:

$VARIABLE[$ANOTHERVARIABLE] = [
    'title' => 'Amazon - Templates'
]; 

提前致谢

【问题讨论】:

  • 在用其他内容覆盖之前,无需在文件中写入换行符。

标签: bash macos shell terminal macos-sierra


【解决方案1】:

bash 中的双引号试图将它们扩展为变量,但它没有定义。使用单引号或更好地使用此处的字符串来打印漂亮的多行格式字符串。这是处理一些变量的示例方法。

foo=bar
bar=foo
basename=foobar

tee ext_emconf.php <<EOF
$foo[$bar] = [
'title' => '$basename- Templates'
];
EOF

上面的例子使用tee 写入标准输出和提到的文件。如果您不希望在控制台中看到它,也可以将 stdout 重定向到 /dev/null

tee ext_emconf.php <<EOF > /dev/null
$foo[$bar] = [
'title' => '$basename- Templates'
];
EOF

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 2011-11-13
    • 1970-01-01
    • 2010-11-12
    • 2010-10-29
    • 2021-08-10
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    相关资源
    最近更新 更多