gpt4 book ai didi

java - 用其他东西替换 eval

转载 作者:太空宇宙 更新时间:2023-11-04 11:51:59 25 4
gpt4 key购买 nike

我正在尝试用其他东西替换我代码中的 eval。我目前拥有的正在运行:

#$1 command "command"
#$2 params "--source='Waiting b'"
fun_example(){
eval java -Dfile.encoding="UTF-8" \
-Duser.language="en" -Dspring.profiles.active="x" -jar /x.jar \
${1} $(echo ${2} | sed "s|'|\"|g")
}

我尝试了各种方法,但没有任何效果。主要问题是,应用程序以任何其他方式接收带有引号示例“Waiting”的参数,如果我不放置任何“,那么如果它有任何空格 Waiting 而不是 Waiting b,则参数将被切断。我可能会更改它在应用程序内部删除引号,但我想避免这种情况。

如果我这样做,就会遇到上述问题。

java -Dfile.encoding="UTF-8" \  
-Duser.language="en" -Dspring.profiles.active="x" -jar /x.jar \
${1} $(echo ${2} | sed "s|'|\"|g")

提前致谢。

更新:主要问题是我的命令存储在环境变量中!

最佳答案

所以在经历了很多痛苦和@thatootherguy 的一些有用建议之后,我最终使用了这个解决方案

fun_example_call() {
export LANG=C.UTF-8
COMMAND=(java -Dfile.encoding="UTF-8" -jar /x.jar "$@")
"${COMMAND[@]}"
status=$?

if [[ ${status} -eq 0 ]]
then
return 0
else
return 1
fi
}


#$1 = command "example_command"
#$2 = params - example params "test='wow' wow='test'"
fun_example(){
IFS="'" read -r -a array <<< $2
RUN_ARRAY=("fun_example_call" $1)
for (( VAR = 0; VAR < ${#array[@]}; VAR+=2 )); do
RUN_ARRAY+=(${array[$VAR]}"${array[$VAR+1]}")
done
"${RUN_ARRAY[@]}"
}

希望这对某人有所帮助。就像@thatootherguy 所说的那样,目标是拥有一个参数数组,这样我们就不会触发 system(3) 样式语义

关于java - 用其他东西替换 eval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55820507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com