2011-12-16 28 views
12

üzerinden okunan bir betiğe argümanlar nasıl iletilir? "Bash - How to pass arguments to a script that is read via standard input" iletisinde biraz daha genişletmek istiyorum.Bash - Yönlendirilmiş standart girdi

Standart girdiler alan ve bağımsız değişkenleri iletirken uzaktan çalıştıran bir komut dosyası oluşturmak istiyorum.

ssh server_name bash <&0 

nasıl kabul argümanlar aşağıdaki yöntemi alıp senaryom uygulamak: Ben inşa ediyorum script

Basitleştirilmiş içeriği?

cat script.sh | bash /dev/stdin arguments 

Belki bunu yanlış yapıyorum, lütfen alternatif çözümler de sağlayın.

+0

komut -line args bu uygulama için yetersiz mi? –

+0

Ssh sunucu_adı bash <& 0 'için komut satırı argümanlarını nasıl sağlarım, böylelikle bunlar bash seçenekleri olarak yorumlanmazlar? – dabest1

cevap

14

bu deneyin:

cat script.sh | ssh some_server bash -s - <arguments> 
2

ssh bir fark yaratmak olmamalı:

$ cat do_x 
#!/bin/sh 

arg1=$1 
arg2=$2 
all_cmdline=$* 
read arg2_from_stdin 

echo "arg1: ${arg1}" 
echo "arg2: ${arg2}" 
echo "all_cmdline: ${all_cmdline}" 
echo "arg2_from_stdin: ${arg2_from_stdin}" 

$ echo 'a b c' > some_file 
$ ./do_x 1 2 3 4 5 < some_file 
arg1: 1 
arg2: 2 
all_cmdline: 1 2 3 4 5 
arg2_from_stdin: a b c 
$ ssh some-server do_x 1 2 3 4 5 < some_file 
arg1: 1 
arg2: 2 
all_cmdline: 1 2 3 4 5 
arg2_from_stdin: a b c 
+0

Üzgünüm, demek istediğim bu değildi. Örneğinizden ssh bazı sunucu do_x 1 2 3 4 5 dabest1

+0

Anlamıyorum. Do_x'de kendi kabuğunu yazmaya çalışıyor musunuz? –

+0

Sağlanan herhangi bir komut dosyasını çalıştıran bir sarmalayıcı komut dosyası oluşturmaya çalışıyorum. Ayrıca herhangi bir boru girişini desteklemek istiyorum. – dabest1

İlgili konular