我的 python scripy 打印一个字符串print("declare -A gaps=( [2019-2-24]=4 )")
,我可以declare -A gaps=( [2019-2-24]=4 )
在 bash shell 上运行来创建一个名为 的字典gaps
。
在我的 bash 脚本中,我使用名为 的变量gap_string
来访问 python scripy 的输出。然后我使用反引号包围gap_string
预期创建一个字典,该字典失败并错误:declare: “[2019-2-24]=4”: is not a valid identifier
。
更多细节:
我的 bash 脚本中的代码:
declare -A birthdays=(["${year}0120"]="GG")
gap_string=`/home/roach/.config/argos/LunarSolarConverter.py ${!birthdays[@]}`
if [ $? -eq 0 ]; then
`$gap_string`
fi
我的 Python 脚本中的代码:
if __name__ == '__main__':
converter = LunarSolarConverter()
gaps_string = ["declare -A gaps=("]
today = datetime.datetime.today()
today_date = today.date()
year = today.year
isleap = (year % 4 == 0 and (year % 100 != 0 or year % 400 == 0))
days_this_year = 366 if isleap else 365
for i in range(1, len(sys.argv)):
year, month, day = int(sys.argv[i][:-4]), int(sys.argv[i][-4:-2]), int(sys.argv[i][-2:])
lunar = Lunar(year, month, day, isleap)
solar = converter.LunarToSolar(lunar)
gap = (datetime.date(solar.solarYear, solar.solarMonth, solar.solarDay) - today_date).days % days_this_year
if gap <= 4:
gaps_string.append(f"[{solar.solarYear}-{solar.solarMonth}-{solar.solarDay}]={gap}")
gaps_string.append(")")
if len(gaps_string) == 2:
sys.exit(1)
else:
print(" ".join(gaps_string))
sys.exit(0)
python脚本的作用是将农历日期转换为阳历日期,然后计算今天与特定阳历之间的天数,然后提醒我家人的生日。
答案1
答案2
可以使用set -x
命令进行调试。就拿下面的例子来说:
set -x
declare -A gaps=( [2017-02-11]=4 )
会给你:
+ gaps=([2017-02-11]=4)
+ declare -A gaps
和
s="declare -A gaps=( [2017-02-11]=4 )"
$s
会给你:
+ declare -A 'gaps=(' '[2017-02-11]=4' ')'
所以你可以看到在第二种情况下正在执行的命令是:
declare -A 'gaps=('
declare -A [2017-02-11]=4
declare -A )