bash,

2016-04-12 61 views
2

'da verilen argümanı/değişkeni bakın. İçine aktarılan argümana nasıl başvurulur? Örneğinbash,

, sen ./test.sh abcd.txt çalıştırdığınızda

#!/bin/bash 
echo $1 

aşağıdaki gibi bir kod test.sh varsa, abcd.txt ekrana yazdırılacak alacak.

Ancak, ls *.txt | ./test.sh'u denediğimde, hepsi boş satırlar ekledim.

+2

STDIN! = Komut satırı bağımsız değişkenleri. – Biffen

cevap

3

Eğer xargs kullanarak deneyebilirsiniz:

find . -type f -name \*.txt -printf "%p\0" | xargs -0 -I xxx ./test.sh xxx 
+0

@EtanReisner teşekkür ederim! Bir keresinde başım belaya girmeden hatırladığımı hatırlıyorum da ... Bir kez de dikkatimi çekerim -Bu şey hakkında bilgi bulamadım. Bunu daha fazla test etmeyi planladım. –

+0

@EtanReisner cevaplar testlerden sonra düzenlendi, -I xxx' tutuldu, aksi halde bu başarısız oluyor. –

1

Verileri "yöneltilen" STDIN olduğunu, ancak bu argümanlar satırı komut değildir. İşte STDIN'den her satırı baskı bir örnek: Bash read komuta birçok seçenek vardır

#!/usr/bin/env bash 
while read line; do 
    echo "Line: $line" 
done 

. Daha fazla bilgi için man sayfasının SHELL BUILTIN COMMANDS bölümünü okuyun.