나는 이런 코드를 가지고있다
#! /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."
또한 ;
할당 라인의 끝은 필요하지 않습니다.