引数付きのスクリプトを書く?


11

引数を取り、それをファイルに適用するシェルスクリプトを書きたいです。

具体的には、用語を指定し、mxmlc( "mxmlc term.as")でterm.asをコンパイルしてから、flashplayerdebugger( "flashplayerdebugger term.swf")でterm.swfを実行します。私はシェルスクリプトの作成にかなり慣れていません。


$2最初の引数、$32番目の引数などです。 $1ファイルの名前用に予約されています。他のものに関しては、私はあなたが何を意味するのかよくわかりません。あなたはそれをもう少し良く説明しようとしたり、いくつかの擬似コードを書いてみてください。
4

1
@InkBlendは1つずれています。"$1"最初の引数です。
ガイラ

@geirha:痛い。それは痛い。もちろんです。愚かなことに、私はPythonを考えていたに違いありません。
-fouric

回答:


19

次のようなものを使用できます。

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

1
または、NAME変数を完全にスキップして、andを使用mxmlc "$1".asflashplayerdebugger "$1".swfます。(引用は式の中に入れることができます。)
エリアケイガン

しかし、パラメータにスペースが含まれている場合はどうなりますか?
ダウィッド

その通りです。このエラーを修正するためにコメントを編集しました。
エリアケイガン

@shinnraパラメータは、その後、スペースが含まれている場合nxmlcflashplayerdebugger、複数の引数の代わりに、意図した一つの引数を取得します。の拡張はNAME二重引用符で囲む必要があります。補足として、すべての大文字の変数名を使用しないでください。特別なシェル変数または環境変数を上書きする危険があります。
ガイラ

4

変数名の区切り文字を使用することもお勧めします。したがって、コードは次のようになります。

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

これにより、他のテキスト内であっても、任意のコンテキストで変数を使用できます。例えば:

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

これにより、変数NAMEが展開され、「myFileIs」が前面に、「and that is all」が背面に配置されます。変数は、文字列内にスペースを含めて展開されます。NAMEが「inside here」の場合、NewNameは「myFileIsinside hereandそれだけ」になります。

コマンドラインは最大9つの変数を使用できます。空白を含む引用符付き文字列にすることができ、引用符付き文字列はそれぞれ変数としてカウントされます。といった:

./myProg var1 var 2 var3

そう${1}です"var1"${2}です"var"${3}です"2"${4}です"var3"

だが: ./myProg var1 "var 2" var3

持って${1}いる"var1"${2}ある"var 2"${3}ある"var3"

楽しんで!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.