我在尝试直接运行pgloader命令时遇到了一个问题,由于特殊字符而导致解析器问题。为了解决这个问题,我决定使用shell脚本执行pgloader命令。但是,在执行过程中,脚本中的echo命令打印以下内容,而不将变量替换为pgsql://pguser:@/db_dev。沿着,我遇到了IndexError: list index out of range
异常
#!/bin/bash
# Function to URL encode a string
urlencode() {
python3 -c "import sys, urllib.parse as ul; print(ul.quote(sys.argv[1]))"
}
#MySQL connection string
mysql_password="Tes^((***))"
mysql_connection="mysql://mysqluser:$(urlencode "$mysql_password")@$(urlencode "test_mysql_url.rds.amazonaws.com:3306")/db_af"
# PostgreSQL connection string
pgsql_password="Test%%*$"
pgsql_connection="pgsql://pguser:$(urlencode "$pgsql_password")@$(urlencode "test_pg_url.rds.amazonaws.com:5432")/db_dev"
echo $pgsql_connection
# Combine both connection strings and execute pgloader
pgloader_command="pgloader $mysql_connection $pgsql_connection"
eval "$pgloader_command"
字符串
1条答案
按热度按时间7ajki6be1#
您的函数忘记包含其参数。
字符串
如果不是很明显,以
python -c
开头的行上的最后一个标记是"$@"
,它包含函数的参数(正确引用)。