You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FreeIPA设置用户密码过期时间:Bash变量传参失败排查

问题原因与解决方法

你的核心错误是在变量中额外添加了单引号——手动执行时的单引号只是Shell用来避免空格拆分的语法,并非参数本身的一部分,导致ipa命令收到的参数格式不符合要求。

两种尝试的具体问题

  1. 第一种写法:

    new_date="'$(date +"%F %T" -d "+90 days")Z'"; echo $new_date; ipa user-mod username --password-expiration=$(echo $new_date)
    
    • 变量new_date包含了单引号,当用$(echo $new_date)传递参数时,Shell解析会把单引号作为参数的一部分,甚至因空格和单引号的组合将参数拆分成多个部分,触发command 'user_mod' takes at most 1 argument错误。
  2. 第二种写法:

    export new_date="'$(date +"%F %T" -d "+90 days")Z'"; echo "${new_date}"; ipa user-mod username --password-expiration="${new_date}"
    
    • 变量里依然带有单引号,传递给ipa的参数是'2023-07-24 07:52:14Z'(包含单引号),而ipa要求的格式是不带单引号的纯日期字符串,因此格式验证失败。

正确写法

直接生成符合要求的日期格式字符串,无需额外添加单引号,传递参数时用双引号包裹变量即可:

# 生成带Z后缀的正确日期格式
new_date=$(date +"%F %TZ" -d "+90 days")
# 执行修改命令,双引号包裹变量避免空格拆分
ipa user-mod username --password-expiration="${new_date}"

也可以把Z直接整合到date的格式参数里,效果完全一致:

new_date=$(date +"%Y-%m-%d %H:%M:%SZ" -d "+90 days")
ipa user-mod username --password-expiration="${new_date}"

内容的提问来源于stack exchange,提问作者Unpossible

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 03:57:22