我有这样的代码
#! /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;
Run Code Online (Sandbox Code Playgroud)
输出是
bla bla bla
more stuff
Run Code Online (Sandbox Code Playgroud)
$version 和 $prefix 没有添加到 myFile.txt ......为什么?
$
变量前面的符号用于读取它们。
如果要分配它们,则必须省略$
符号,即:
version="1.0"
preffix="ApplicationName."
Run Code Online (Sandbox Code Playgroud)
此外,;
分配行的末尾不需要 。
该程序将在您的程序不适用的地方运行:
#!/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;
Run Code Online (Sandbox Code Playgroud)
您对空格的喜爱使您的程序更具可读性,但也使其无法运行。
此外,虽然这对这个程序来说无关紧要,但这样做确实是个好主意:
#!/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;
Run Code Online (Sandbox Code Playgroud)
这是因为如果你做了类似的事情:
version='1 2'
Run Code Online (Sandbox Code Playgroud)
在你原来的程序中,你最终会得到一个有点出乎意料的结果。将引号放在变量周围是防止此类神秘错误的好主意。