확장/평가하지 않고 변수가 있는 문자열을 에코합니다.

확장/평가하지 않고 변수가 있는 문자열을 에코합니다.

나는 모든 곳을 보았습니다. 에코 및 인쇄를 시도했습니다. 작은따옴표와 큰따옴표를 사용해 보았습니다. 하지만 데이터를 구문 분석하여 변수에 할당한 다음 변수가 포함되어 있는지 평가하고 싶습니다. 그런 다음 변수를 와일드카드로 바꾸고 파일을 검색하겠습니다.

예:

var="file.$DATE.txt"

### Where it goes wrong-  Needs to identify that $DATE is within the $var varaible.
test=$(echo "$var"|grep '\$')
if [[ $test ]]
then
    ### I would use whatever fix is discovered here as well
    test=$(echo $test|sed 's/\$[a-zA-Z]*/\*/')
fi

### (Actually pulling from remote machine to local)
cat $test > /tmp/temporary.file

이것은 나의 많은 실패 중 적어도 하나입니다.

PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>

이것이 확장과 관련이 있다는 것을 알고 있지만 수정하는 방법을 모르겠습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사해요!

답변1

$date변수 var 내부에 필요한 경우 :

var='file.$date.txt'

이렇게 하면 변수 내부에 $가 유지됩니다.

$ echo "$var" | grep '\$'
file.$date.txt

답변2

쉘 확장을 방지하려면 변수 주위에 작은따옴표를 사용하십시오. 예제는 echo '$file'확장되지 않습니다 $file.

댓글을 단 후 수정됨:

$int var변수 에 이스케이프 기호를 사용할 수 있습니다 var="file.\$DATE.txt".

관련 정보