Nasıl el ile özel bir değişken (ör: tilde~) bash genişletmek için
Böyle bir şey kimin bash benim komut dosyası içinde bir değişken var:
~/a/b/c
Tilde unexpanded olduğunu unutmayın. -Lt bu değişken ($VAR diyelim) mi ben ne zaman böyle bir dizin olsun. Bash yorumlamak izin/çalıştırmadan, bu değişken genişletmek istiyorum. Diğer bir deyişle, bash eval çalıştırın ama değerlendirdi komutu çalıştırmak istiyorum. Bu mümkün bash mı?
Nasıl genişleme olmadan benim komut dosyası içine bu geçiş yaptın? Çift tırnak ile onu çevreleyen tartışmayı geçtim.
Bu ne demek istediğimi görmek için komutu deneyin:
ls -lt "~"
Bu tam da içinde olduğum durum. Tilde genişletilmiş olmak istiyorum. Diğer bir deyişle, ben büyü ile bu iki komut aynı yapmak için Değiştir gerekenler:
ls -lt ~/abc/def/ghi
ve
ls -lt $(magic "~/abc/def/ghi")
~/Abc/def/GSS olabilir veya olmayabilir olduğunu unutmayın.
CEVAP
Nedeniyle doğa StackOverflow, ben sadece bu cevabı kabul edilmeyen, ama aradan geçen 5 yıldan bu yana yayınlanan bu orada olması çok daha iyi cevaplar daha benim kuşkusuz ilkel ve oldukça kötü cevap (ben genç, beni öldürme).
Bu konuyu diğer çözümler daha güvenli ve daha iyi çözümler vardır. Tercihen, bu iki iki ile gitmek istiyorum:
Tarihi amaçlar (ama lütfen bu kullanmayın) için özgün bir cevap
Eğer yanlışım yoksa, "~"
hazır bir değer olarak kabul edilir, çünkü bu şekilde bir bash betiği genişletilecek. "~"
. Bu gibi eval
) genişleme zorlayabilir.
#!/bin/bash
homedir=~
eval homedir=$homedir
echo $homedir # prints home path
Alternatif olarak, sadece kullanın eğer kullanıcının ev dizini isterseniz 13**.
Nasıl bir BASH değişken bir komut çıkt...
Nasıl Bash bir değişken için heredoc b...
Nasıl bash script bayrakları ile değiş...
Nasıl bir Bash komut bir değişken stan...
Nasıl isteğe bağlı giriş bağımsız deği...