Wszędzie szukałem. Próbowałem echa i wydruku. Wypróbowałem pojedyncze i podwójne cytaty. Ale przeanalizowałem dane i przypisałem je do zmiennej, a następnie chciałbym je ocenić pod kątem obecności zmiennej. Następnie zmienię zmienną na symbol wieloznaczny i szukam pliku.
Przykład:
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
Oto co najmniej jedna z moich wielu awarii:
PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>
Wiem, że ma to coś wspólnego z rozszerzeniem, ale nie mam pojęcia, jak to rozwiązać. Każda pomoc będzie mile widziana. Dzięki!
$date
? Dla tego zastosowania:var='file.$DATE.txt'
. Aby rozszerzyć datę, kiedy używany jest var? Jestem pewien, że musisz wyjaśnić, o co pytasz.sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
Odpowiedzi:
Jeśli potrzebujesz
$date
wewnątrz zmiennej var:To zatrzyma $ wewnątrz zmiennej:
źródło
Użyj pojedynczych cudzysłowów wokół zmiennych, aby zapobiec rozszerzaniu powłoki. Przykład
echo '$file'
się nie rozwinie$file
.Edytuj po komentarzu poniżej:
Możesz uciec ze
$
znaku wvar
zmiennej za pomocąvar="file.\$DATE.txt"
.źródło