Bir seferde yürütmeden önce bazı parametrelere dayalı bir dize bir komut satırı oluşturur bir bash komut dosyası var. Komut dizesine birleştirilen parçaların, her bileşen boyunca bir veri akışını kolaylaştırmak için borularla ayrılması beklenir.
Çok basitleştirilmiş bir örnek:
#!/bin/bash
part1=gzip -c
part2=some_other_command
cmd="cat infile"
if [ ! "$part1" = "" ]
then
cmd+=" | $part1"
fi
if [ ! "$part2" = "" ]
then
cmd+=" | $part2"
fi
cmd+="> outfile"
#show command. It looks ok
echo $cmd
#run the command. fails with pipes
$cmd
Nedense borular çalışmıyor. Bu komut dosyasını çalıştırdığımda genellikle komutun ilk bölümüne (ilk kanaldan önce) ilişkin farklı hata mesajları alıyorum.
Benim sorum şu: Bu şekilde bir komut oluşturmanın mümkün olup olmadığı ve bunu yapmanın en iyi yolu nedir?
infile
Geçerli dizinde var olduğunu varsaymak güvenli midir?