2016-04-05 15 views
-4

Herkese neler oluyor? Linux İşletim Sistemi sınıfımda bu görevim var ve küçük bir sorunum var. Bu Linux Bash Komutu Unlimitd Argümanları Alabilir

tüm dosya adlarını temsil argümanlar sınırsız sayıda alan bir Bash kabuk komut dosyası olarak adlandırılan chkread yaz, beni sorar.

Buraya kadar geldim, ama profesörün tam olarak ne aradığını sanmıyorum.

~$ cat MY_SCRIPT 
#!/bin/bash 
echo ${unlimited arguments} 
~$ bash MY_SCRIPT cat dog horse 
cat dog horse 
+0

Hayır, kesinlikle değil. Ayrıca, bir forum ve bir Q & A sitesi olan StackOverflow'u da karıştırmıyor olabilirsiniz. Ama yeterince rep kazandığı zaman bazı güzel sohbet odaları var :) –

+0

ah, bu konuda üzgünüm. classmate bu siteyi bana önerdi ve sadece bunun olduğunu düşündüm. yine de teşekkürler! –

+0

Soruları cevaplamaktan çok mutluyuz, ancak * cevaplanabilecek soruları soruyoruz *. Birkaç dakika okuma/tekrar okuma SSS, http://www.catb.org/esr/faqs/smart-questions.html ve http://stackoverflow.com/help/mcve bir göz atın ve ' Burada, en azından iyi sorular soruyorsanız, * son derece yararlı bir demet olduğumuzu göreceğiz;) Tipik olarak iyi bir soru, 1) neyi başarmak istersiniz? 2) Probleminizi çözmek için ne denediniz? Eğer aradıysanız, ne aradınız? Kod yazdıysanız, MCVE'yi yapıştırın. 3) Ne * ne * istediniz? –

cevap

1

Bash komut dosyasında birden çok argümanı işlemek için böyle bir şey kullanabilirsiniz.

#!/bin/bash 
file_names=("[email protected]") 

for name in "${file_names[@]}"; do 
    echo "$name" 
done 

Ve senaryoyu çağırdığınızda sonra:

bash chkread.sh file1 file2 file3 file4 

komut çıkışına bunları yazdırır:

file1 
file2 
file3 
file4 

Ama bu sadece bir örnektir. Senaryonun içinde ne yapman gerekiyorsa onlarla yapabilirsin.

-2

$*'u kullanın. Bu size her şeyi verecektir. Örneğin:

#!/bin/bash 
file_names=$* 
echo $file_names 

Çıktı:

[email protected]:~$ x.sh `ls *.sql` 
current.sql goop.sql latest.sql long.sql report.sql 
[email protected]:~$ x.sh one two three 
one two three 
+0

Haklısınız, doğru biçimlendirme kullanmalıydım. Bunu yaptığım için üzgünüm. –

+1

Bu, boşluk içeren dosya adları ile çalışmaz. –

+0

Doğru. İşletim sistemine bağlı olarak, muhtemelen ya çalışır. Aynı zamanda boşluktan da kaçabilirsiniz, ama başka bir süreci çağırmadan gerçekten kolay değil, sanmıyorum. Açıkçası, bunun gibi bir şey kendini perl'e ya da benzerlerine borçludur, fakat OP, iş için yanlış aracı kullanmaya (IMO) yönelmişti, bu yüzden bazı şeyleri kısıtlıyor. –

İlgili konular