编写带参数的脚本?

sou*_*iot 11 command-line bash scripts

我想编写一个带参数的 shell 脚本,然后将其应用于文件。

具体来说,我想给出一个term,然后让它用mxmlc(“mxmlc term.as”)编译term.as,然后用flashplayerdebugger(“flashplayerdebugger term.swf”)运行term.swf。我对 shell 脚本很陌生 - 有什么想法吗?

小智 19

你可以使用这样的东西:

#!/bin/sh
# $0 is the script name, $1 id the first ARG, $2 is second...
NAME="$1"
mxmlc $NAME.as
flashplayerdebugger $NAME.swf
Run Code Online (Sandbox Code Playgroud)


小智 5

我还建议您使用变量名分隔符。所以代码看起来像:

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

这允许在任何上下文中使用变量,甚至在其他文本中。例如:

NewName="myFileIs${NAME}and that is all"
Run Code Online (Sandbox Code Playgroud)

这将扩展变量 NAME,它的前面是“myFileIs”,后面是“and that's all”。变量将在字符串内扩展,包括空格。如果 NAME 是“inside here”,则 NewName 将是“myFileIsinside hereand that is all”。

命令行最多可以包含 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"

玩得开心!