在 Bash 中将变量附加到文件不起作用

在 Bash 中将变量附加到文件不起作用

我有这样的代码

#! /bin/bash

$version = "1.0";
$preffix = "ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo $preffix >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo $version >> myFile.txt
done;

输出是

bla bla bla

more stuff

$version 和 $prefix 没有添加到 myFile.txt...为什么?

答案1

这个程序可以在你的程序无法工作的地方工作:

#!/bin/bash

version="1.0";
preffix="ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo $preffix >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo $version >> myFile.txt
done;

您对空间的喜爱使您的程序更具可读性,但也使其无法运行。

另外,虽然这对于这个程序来说并不重要,但这样做确实是个好主意:

#!/bin/bash

version="1.0";
preffix="ApplicationName.";

for f in pack*;
do
    echo "bla bla bla" > myFile.txt
    echo "$preffix" >> myFile.txt
    echo "more stuff" >> myFile.txt
    echo "$version" >> myFile.txt
done;

这是因为如果你做了类似的事情:

version='1  2'

在你原来的程序中,你最终会得到一些意想不到的结果。在变量周围加上引号确实是防止此类神秘错误的好主意。

答案2

变量前面的符号$用于读取它们。

如果你想分配它们,你必须省略符号$,即:

version="1.0"
preffix="ApplicationName."

此外,;赋值行末尾不需要 。

相关内容