Chcę napisać skrypt powłoki, który pobiera argument, a następnie stosuje go do plików.
W szczególności chcę podać termin, a następnie zlecić mu skompilowanie term.as z mxmlc („mxmlc term.as”), a następnie uruchomić term.swf z programem flashplayerdebugger („flashplayerdebugger term.swf”). Jestem całkiem nowy w skryptowaniu powłoki - jakieś myśli?
bash
scripts
command-line
southpointingchariot
źródło
źródło
$2
to pierwszy argument,$3
drugi i tak dalej.$1
jest zarezerwowany dla nazwy pliku. Co do innych rzeczy, nie do końca rozumiem, co masz na myśli. Czy mógłbyś spróbować wyjaśnić to trochę lepiej lub napisać kod psuedocode?"$1"
to pierwszy argument.Odpowiedzi:
Możesz użyć czegoś takiego:
źródło
NAME
całkowicie pomiń zmienną i po prostu użyjmxmlc "$1".as
iflashplayerdebugger "$1".swf
. (Cytaty mogą być wewnątrz wyrażeń.)nxmlc
iflashplayerdebugger
otrzyma wiele argumentów zamiast zamierzonego jednego argumentu. EkspansjaNAME
musi być podwójnie cytowana. Na marginesie, nie używaj wszystkich nazw zmiennych wielkich liter; ryzykujesz zastąpienie specjalnych zmiennych powłoki lub zmiennych środowiskowych.Polecam również użycie ogranicznika nazwy zmiennej. Tak więc kod wyglądałby następująco:
Pozwala to na użycie zmiennej w dowolnym kontekście, nawet w innym tekście. Na przykład:
Spowodowałoby to rozwinięcie zmiennej NAME, która byłaby flankowana z przodu przez „myFileIs”, a z tyłu z „i to wszystko”. Zmienna rozwijałaby się, łącznie ze spacjami, wewnątrz ciągu. jeśli NAZWA byłaby „wewnątrz tutaj”, NowaNazwa brzmiałaby „myFileIsinside tutaj i to wszystko”.
Wiersz poleceń może przyjąć do 9 zmiennych. Mogą być cytowanymi ciągami znaków, które zawierają spacje, każdy cytowany ciąg liczy się jako zmienna. Jak na przykład:
./myProg var1 var 2 var3
Tak
${1}
jest"var1"
,${2}
jest"var"
,${3}
jest"2"
,${4}
jest"var3"
ALE:
./myProg var1 "var 2" var3
ma
${1}
jest"var1"
,${2}
jest"var 2"
,${3}
jest"var3"
Baw się dobrze!
źródło