写一个bash脚本调用百度翻译API进行中文到英文的翻译,首先需要进行相关的申请。看百度给出的文档链接: 百度翻译API文档
需要先注册一个百度账号,然后申请APPID。脚本中会用到appid和key这两个值。按照文档给出的提示可以获得。如下是脚本:
#! /bin/bashfunction printRedMessage {if [ $# -eq 0 ]; thenreturnfiecho -e "\e[31m$1\e[0m"
}function printGreenMessage {if [ $# -eq 0 ]; thenreturnfiecho -e "\e[32m$1\e[0m"
}if [ $# -eq 0 ]; thenprintRedMessage "请输入需要翻译的中文内容."exit 1
elif [ $# -gt 1 ]; thenprintRedMessage "参数太多, 只支持一个参数."exit 2
fistr="$1"rand_val=$RANDOM
app_id="XXXXXXXXXX"
key="XXXXXXXXXXXX"
fanyi_url="https://fanyi-api.baidu.com/api/trans/vip/translate"
sign=$(echo -ne "$app_id$str$rand_val$key" | md5sum | grep -oP "^\w+")result=$(curl --silent --insecure --request POST "$fanyi_url" \--form "q=$str" \--form "from=auto" \--form "to=en" \--form "appid=$app_id" \--form "salt=$rand_val" \--form "sign=$sign")# 格式化输出结果
echo "$result" | jq
需要把脚本中对应的appid和key这两个变量替换成自己申请的appid和key值。
以本人的ubuntu环境为例,因为脚本中使用了curl和jq这两个命令,系统中可能没有安装,
使用 sudo apt install curl jq 安装一下,下面是测试脚本的运行效果:
输出结果是一个json字符串,其中的"dst"字段就是百度翻译给出的结果。
下面是返回的json:
{"from": "zh","to": "en","trans_result": [{"src": "脚本调用百度翻译API,测试翻译效果如何","dst": "Script calls Baidu Translate API to test the translation effect"}]
}
再测试一个翻译:
下面是返回的json:
{"from": "zh","to": "en","trans_result": [{"src": "是骡子是马拉出来遛遛, 看看百度翻译API的能力到底如何","dst": "Is it a mule or a horse pulled out for a walk? Let's see how good Baidu Translate API is"}]
}