Я искал везде. Пробовал эхо и печатал. Пробовал одинарные и двойные кавычки. Но я проанализировал данные и присвоил их переменной, а затем хотел бы оценить, есть ли в них переменная. Затем я заменю переменную подстановочным знаком и произведу поиск файла.
Пример:
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>
Я знаю, что это как-то связано с расширением, но понятия не имею, как это сделать. Любая помощь будет оценена. Спасибо!
$date
? Для этого применения:var='file.$DATE.txt'
. Расширить дату, когда используется var? Я уверен, что вам нужно объяснить, что вы спрашиваете.sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
Ответы:
Если вам нужно
$date
внутри переменной var:Это будет держать $ внутри переменной:
источник
Используйте одинарные кавычки вокруг переменных, чтобы предотвратить расширение оболочки. Пример
echo '$file'
не будет расширяться$file
.Изменить после комментария ниже:
Вы можете избежать
$
знака int вvar
переменной с помощьюvar="file.\$DATE.txt"
.источник