qq_38885271 2020-11-07 00:00 采纳率: 0%
浏览 79

expect的子程序怎么获取环境变量

我有一个程序,入口是shell脚本,里面把密码放入环境变量,并且调用了一个expect脚本,在expect里可以取到环境变量,但是这个except脚本又调用了个shell脚本,这个脚本里取不到环境变量,有没有办法在不明文传递密码的情况下,让这个except的子程序取到环境变量

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-07-24 21:30
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    在这种情况下,可以使用`export`命令将环境变量传递给子进程。`export`命令可以将当前shell中定义的变量传递给所有后续执行的程序,包括子进程。 下面是一个示例的解决方案:
    1. 在shell脚本中定义并导出密码环境变量:
    #!/bin/sh
    export PASSWORD="your_password"
    expect expect_script.exp
    
    1. 在expect脚本中读取环境变量并传递给子进程:
    #!/usr/bin/expect
    set password $env(PASSWORD)
    spawn sh child_script.sh
    send "$password\r"
    expect eof
    
    1. 在子shell脚本中接收环境变量:
    #!/bin/sh
    read -p "Enter password: " password
    echo "Password is: $password"
    

    通过这种方法,可以将密码环境变量传递给expect的子进程,同时避免了在代码中明文传递密码的风险。

    评论

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵