Değişkende boru (|) nasıl saklanır?


12

Fikir, onu bir komutta boru olarak kullanmak olurdu. Örneğin: tekrar tekrar tekrar yazılması gereken bir tür uzun yol var, ardından bir boru ve ikinci bir program var, yani

"directory1/directory2/direcotry3/file.dat | less -I "

Bu bölümün bir değişkende saklanmasını istiyorum, bu yüzden şu şekilde kullanılabilir:

r="directory1/directory2/direcotry3 \| less -I -p "
$ cat path1/path2/$r <searchterm>

Bunun yerine,

cat: invalid option -- I
Try `cat --help' for more information.

... boru açıkça işe yaramadı.


1
Yapabiliyorsanız eval, genellikle bir işlev yaparsınız.
frostschutz

Yanıtlar:


22

bash değişkenleri genişlettikten sonra komut satırını tamamen yeniden yorumlamaz. Bunu zorlamak için öne koyun eval:

r="directory1/directory2/direcotry3/file.dat | less -I "
eval "cat path1/path2/$r"

Bununla birlikte, bunu yapmanın daha zarif yolları vardır (takma adlar, işlevler vb.).


8

Kod ve verileri karıştırmaya çalışıyorsunuz, bu iyi bir fikir değil. Bunun yerine, bir dosya (dizin?) Adını bağımsız değişken olarak alan ve ile görüntüleyen bir işlev tanımlayın less.

view () {
    less -I -p "$2" $1
}

view directory1/directory2/directory3 <searchterm>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.