2017-07-21 62 views
5

bunu, ona bölmektense yerine "Param1 param2" argümanı ile aracı arayacak çünkü beklendiği gibi şimdi çalışacaktırBirden çok parametreye izin vermek için nasıl Shebang kandırılır?

#!/usr/bin/env some-tool-accepting-yaml param1 param2 
... (yaml body) 

gibi bir şey varsa o kadar çok shebang uygulamalar, tek bir parametreyi destekler biliyoruz mı iki argüman.

#!/bin/sh 
arbitrary_long_name==0 "exec" "/usr/bin/gawk" "--re-interval" "-f" "$0" "[email protected]" 

Şimdi kabul edilebilir tek çözüm birini olurdu böylece nedeniyle 2 çizgiye YAML tabanlı komut dosyası geçersiz kılacak bu yaklaşım aynı zamanda geçerli:

Biri workaround uygulama gibi bir şey kullanmak gibi görünüyor "#" ile başlayan bir yorum da.

Bu sorunu atlatmanın bir yolu var mı?

+1

kullanmadan genel çözüm? çünkü bu konuyla ilgili soru da var: https://stackoverflow.com/questions/17458528/why-does-this-snippet-with-a-shebang-bin-sh-and-exec-python-inside-4-single-q –

+0

Teklif verdiğiniz geçici çözüm, python değil, awk içindir. – rici

+2

YAML veya genel bir çözüm için bir geçici çözüm ile ilgileniyor musunuz? Eski durumda, lütfen sonuçta dosyanın içeriğini neyin tüketebileceğini belirtin? – randomir

cevap

3

çok dilli komut

launcher.sh

#!/bin/bash 

# first argument to be split 
if [[ $- != *f* ]]; then reset=1; fi 
set -f 
arg=($1) 
shift 
if [[ $reset = 1 ]]; then set +f; fi 

# other arguments 
arg+=("[email protected]") 

# launch command 
exec "${arg[@]}" 

komut başlatmak için çalıştırılabilir bu `python` olan

#!/path/to/launcher.sh interpreter opts 
+0

Teşekkürler ama yine de mümkün ise, bağımsız bir çözüm arıyorum. – sorin

İlgili konular