MAC OS X终端强制打印f忽略一些变量

时间:2017-12-08 10:12:38

标签: bash macos shell terminal macos-sierra

我遇到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'
]; 

提前致谢

1 个答案:

答案 0 :(得分:3)

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

foo=bar
bar=foo
basename=foobar

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

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

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