SORU
18 EKİM 2010, PAZARTESİ


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
18 EKİM 2010, PAZARTESİ


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**.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • EEVblog2

    EEVblog2

    2 HAZİRAN 2014
  • FailArmy U

    FailArmy U

    29 AĞUSTOS 2009
  • Grace Su

    Grace Su

    6 Ocak 2006