测试人社区

12期服务端测试 使用的 sh 脚本报 49行附近 Syntax error: Unterminated quoted string

脚本内容


# 压测脚本模板中设定的压测时间为 60秒
# 脚本的名字
export jmx_template="assets"
# 定义文件后缀
export suffix=".jmx"
# 获取到 jmx文件的名称
export jmx_template_filename="${jmx_template}${suffix}"
# 输出系统信息
export os_type=`uname`

# 需要在系统变量中定义 jmeter 根目录的位置,如下
export jmeter_path="D:\author\apache-jmeter-5.1\"

echo "自动化压测开始"

# 压测并发数列表
thread_number_array=(10 20 30 40)
for num in "${thread_number_array[@]}"
do
    # 生成对应压测线程的jmx脚本
    export jmx_filename="${jmx_template}_${num}${suffix}"
    # 生成结果日志
    export jtl_filename="test_${num}.jtl"
    # 生成web报告
    export web_report_path_name="web_${num}"

    rm -f ${jmx_filename} ${jtl_filename}
    rm -rf ${web_report_path_name}

    cp ${jmx_template_filename} ${jmx_filename}
    echo "生成jmx压测脚本 ${jmx_filename}"

    if [[ "${os_type}" == "Darwin" ]]; then
        sed -i "" "s/thread_num/${num}/g" ${jmx_filename}
    else
        sed -i "s/thread_num/${num}/g" ${jmx_filename}
    fi

    # jmeter 静默压测
    ${jmeter_path}/bin/jmeter -n -t ${jmx_filename} -l ${jtl_filename}

    # 生成web 压测报告
    ${jmeter_path}/bin/jmeter -g ${jtl_filename} -e -o ${web_report_path_name}

    rm -f ${jmx_filename} ${jtl_filename}
done
echo "自动化压测全部结束"
  • sh 命令下报 49: assert_sh.sh: Syntax error: Unterminated quoted string 语法错误

贴下报错截图看看


斜杆转义了,导致shell认为下面的内容不是代码导致的

楼上说的对,就是这一句。你的转义有问题

可以改成这样

export jmeter_path="D:\\author\\apache-jmeter-5.1\\"

或者用标准的git bash的路径 /d/author/apache-jmeter-5.1