Bağımsız değişkenli komut dosyaları mı yazıyorsunuz?


11

Bir bağımsız değişken alır ve sonra dosyalara uygulayan kabuk komut dosyası yazmak istiyorum.

Özellikle, bir terim vermek ve sonra mxmlc ("mxmlc term.as") ile term.as derlemek, sonra flashplayerdebugger ("flashplayerdebugger term.swf") ile term.swf çalıştırmak istiyorum. Komut dosyası oluşturmak için oldukça yeniyim - herhangi bir düşünce?


$2ilk argüman, $3ikincisi vb. $1dosyanın adı için ayrılmıştır. Diğer şeylere gelince, ne demek istediğinizi tam olarak anlamıyorum. Lütfen biraz daha iyi açıklamaya veya biraz psuedocode yazmayı deneyebilir misiniz?
fouric

1
@InkBlend birer birer uzaktasınız. "$1"ilk argüman.
geirha

@geirha: Ah. Bu acıttı. Tabii ki haklısın. Aptal ben, Python'u düşünmeliydim.
fouric

Yanıtlar:


19

Bunun gibi bir şey kullanabilirsiniz:

#!/bin/sh
# $0 is the script name, $1 id the first ARG, $2 is second...
NAME="$1"
mxmlc $NAME.as
flashplayerdebugger $NAME.swf

1
Veya atlamak NAMEtamamen değişken ve sadece kullanmak mxmlc "$1".asve flashplayerdebugger "$1".swf. (Alıntılar ifadelerin içinde olabilir.)
Eliah Kagan

ama eğer param boşluk içeriyorsa?
Dawid

Oldukça haklısın. Bu hatayı düzeltmek için yorumumu düzenledim.
Eliah Kagan

Parametre boşluk içeriyorsa @shinnra, o nxmlcve flashplayerdebuggerbir bağımsız değişken amaçlanan yerine birden fazla argüman olacaktır. NAMEİhtiyaçların genişlemesinin çift ​​tırnak içine alınması gerekir. Yan notta, tüm büyük harf değişken adlarını kullanmayın; özel kabuk değişkenlerinin veya ortam değişkenlerinin üzerine yazma riskiniz vardır.
geirha

4

Ayrıca değişken adı sınırlayıcısını kullanmanızı öneririm. Yani kod şöyle görünecektir:

#!/bin/sh
# $0 is the script name, $1 id the first ARG, $2 is second...
NAME="$1"
mxmlc ${NAME}.as
flashplayerdebugger ${NAME}.sw

Bu, değişkenin herhangi bir bağlamda, hatta diğer metnin içinde kullanılmasına izin verir. Örneğin:

NewName="myFileIs${NAME}and that is all"

Bu, "myFileIs" tarafından ve arkada "ile çevrelenecek olan NAME değişkenini genişletecek ve hepsi bu" Değişken, dizenin içine boşluklar dahil olacak şekilde genişleyecektir. NAME "burada" ise, NewName "myFileIsinside ahiresi ve hepsi bu" olurdu.

Komut satırı en fazla 9 değişken alabilir. Bunlar, boşluklar içeren alıntılanmış dizeler olabilir, alıntılanan her dize bir değişken olarak sayılır. Gibi:

./myProg var1 var 2 var3

Yani ${1}olduğu "var1", ${2}olduğu "var", ${3}olduğunu "2", ${4}olup"var3"

FAKAT: ./myProg var1 "var 2" var3

sahip ${1}olduğu "var1", ${2}olduğu "var 2", ${3}olduğunu"var3"

İyi eğlenceler!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.