Saya sudah mencari kemana-mana. Mencoba gema dan mencetak. Mencoba kutipan tunggal dan ganda. Tapi saya telah mem-parsing data dan menugaskannya ke variabel dan ingin kemudian mengevaluasinya jika ada variabel di dalamnya. Saya kemudian akan mengganti variabel dengan wildcard dan mencari file.
Contoh:
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
Inilah setidaknya satu dari banyak kegagalan saya:
PROMPT> file=blah.$DATE
PROMPT> test=$(echo "$file"|grep '\$')
PROMPT> echo $test
PROMPT>
PROMPT>
Saya tahu itu ada hubungannya dengan ekspansi, tetapi tidak tahu bagaimana cara mengatasinya. Bantuan apa pun akan dihargai. Terima kasih!
$date
? Untuk penggunaan bahwa:var='file.$DATE.txt'
. Untuk memperluas tanggal kapan var digunakan? Saya yakin Anda perlu menjelaskan apa yang Anda minta.sed 's/\${*[a-zA-Z0-9_%]*}*/\*/'
Jawaban:
Jika Anda perlu
$date
di dalam variabel var:Itu akan membuat $ di dalam variabel:
sumber
Gunakan tanda kutip tunggal di sekitar variabel untuk mencegah ekspansi shell. Contoh
echo '$file'
tidak akan berkembang$file
.Edit setelah komentar di bawah ini:
Anda dapat menghindari
$
tanda masuk kevar
variabelvar="file.\$DATE.txt"
.sumber