Ехо-рядок із змінною в ньому, не розширюючи / оцінюючи її [закрито]


12

Я всюди шукав. Пробував відлуння та друк. Пробували одиночні та подвійні цитати. Але я проаналізував дані та призначив їх змінній і хотів би потім оцінити їх, чи є в ній змінна. Потім я заміню змінну на підстановку та шукаю файл.

Приклад:

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? Я впевнений, що вам потрібно пояснити, що ви просите.

Вибачте, щоб перевірити, чи визначена змінна в межах змінної "var". Вкладені сорти.
krmarshall87

Я знайшов спосіб вирішити свою дилему, негайно усунувши все, що видається змінною (не піклуючись спочатку, що мені потрібно), і помінявши його підстановою: sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
krmarshall87

Відповіді:


20

Якщо вам потрібно $dateвсередині змінної var:

var='file.$date.txt'

Це дозволить зберегти $ всередині змінної:

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

8

Використовуйте одинарні лапки навколо змінних, щоб запобігти розширенню оболонки. Приклад echo '$file'не розширюватиметься $file.

Редагувати після коментаря нижче:

Ви можете уникнути $знака int varзмінної за допомогою var="file.\$DATE.txt".


Мені потрібно це розширити, але лише один рівень. Забули додати покроковий бажаний результат. Але я хотів би, щоб вміст файлу $ був оцінений за знаком долара ($ DATE).
krmarshall87

Відредаговано для вирішення цього питання.
Мунір

Я отримую ці дані із зовнішнього джерела. Навіть для заміни $ на \ $, я думаю, знадобиться відлуння. ЗАРАЗ, дозвольте мені побачити, чи під час його розбору я можу його видавити.
krmarshall87
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.