如何在 shell 脚本中使用命令行参数传递参数
How to pass parameters using command line arguments in shell script
我是 shell 脚本的新手,我正在为 jmeter 编写 shell 脚本。到目前为止 运行 一个 jmeter 脚本,我已经编写了我的 shell 脚本,如下所示:
#! bin/sh
start(){
echo "Please enter the file name .jmx extension"
read file
echo "Please enter the log file name .jtl extension"
read log_file
jmeter.sh -n -t $file -l $log_file
}
while [ "" != "" ]; do
case "" in
start )
start
;;
*)
echo $"Usage: [=11=] {start|stop}"
exit 1
esac
shift
done
我有一个终止进程的停止方法。在这里,对于这个脚本,我要求用户在不同的行中输入 .jmx
文件名和 .jtl
文件名。但我希望用户在键入命令以执行脚本时能够传递 .jmx
文件名和 .jtl
文件名。
示例:$ ./script.sh .jmx fileName .jtl fileName
那么,脚本应该 运行.
我不知道该怎么做。有人可以帮忙吗?
由于 read
从标准输入读取,您需要在标准输入上传递文件名:
{ echo "file.jmx"; echo "file.jtl"; } | ./script.sh start
使用此处文档可以更整洁:
./script.sh start <<END_INPUT
file.jmx
file.jtl
END_INPUT
一些代码审查:如果用法仅采用单个参数,"start" 或 "stop",则不需要 while 循环:
#!/bin/sh
do_start_stuff() { ... }
do_stop_stuff() { ... }
case "" in
start) do_start_stuff;;
stop) do_stop_stuff;;
*) echo "Usage: [=12=] {start|stop}"; exit 1;;
esac
要重写脚本以获取所有参数:
#!/bin/sh
usage() {
echo "Usage [=13=] {start ...|stop}"
# provide more info about arguments for the start case
# provide an example usage
}
case "" in
stop) do_stop_stuff ;;
start)
shift
if [ "$#" -ne 4 ]; then usage; exit 1; fi
jmeter.sh -n -t "" "" -l "" ""
;;
*) usage ;;
esac
我是 shell 脚本的新手,我正在为 jmeter 编写 shell 脚本。到目前为止 运行 一个 jmeter 脚本,我已经编写了我的 shell 脚本,如下所示:
#! bin/sh
start(){
echo "Please enter the file name .jmx extension"
read file
echo "Please enter the log file name .jtl extension"
read log_file
jmeter.sh -n -t $file -l $log_file
}
while [ "" != "" ]; do
case "" in
start )
start
;;
*)
echo $"Usage: [=11=] {start|stop}"
exit 1
esac
shift
done
我有一个终止进程的停止方法。在这里,对于这个脚本,我要求用户在不同的行中输入 .jmx
文件名和 .jtl
文件名。但我希望用户在键入命令以执行脚本时能够传递 .jmx
文件名和 .jtl
文件名。
示例:$ ./script.sh .jmx fileName .jtl fileName
那么,脚本应该 运行.
我不知道该怎么做。有人可以帮忙吗?
由于 read
从标准输入读取,您需要在标准输入上传递文件名:
{ echo "file.jmx"; echo "file.jtl"; } | ./script.sh start
使用此处文档可以更整洁:
./script.sh start <<END_INPUT
file.jmx
file.jtl
END_INPUT
一些代码审查:如果用法仅采用单个参数,"start" 或 "stop",则不需要 while 循环:
#!/bin/sh
do_start_stuff() { ... }
do_stop_stuff() { ... }
case "" in
start) do_start_stuff;;
stop) do_stop_stuff;;
*) echo "Usage: [=12=] {start|stop}"; exit 1;;
esac
要重写脚本以获取所有参数:
#!/bin/sh
usage() {
echo "Usage [=13=] {start ...|stop}"
# provide more info about arguments for the start case
# provide an example usage
}
case "" in
stop) do_stop_stuff ;;
start)
shift
if [ "$#" -ne 4 ]; then usage; exit 1; fi
jmeter.sh -n -t "" "" -l "" ""
;;
*) usage ;;
esac