我有这样的代码
#! /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."
此外,;
赋值行末尾不需要 。