字符串来源?shell有什么办法吗?

Rob*_*lot 4 bash shell

例:

#!/bin/bash
source "$VARIABLE"
Run Code Online (Sandbox Code Playgroud)

是使用curl从远程位置检索值.

http://example.com/file.cnfg
Run Code Online (Sandbox Code Playgroud)

ric*_*ici 10

盲目执行下载绝对不是你想随便做的事情.

您可以使用如下命令执行变量的内容eval:

eval "$variable"
Run Code Online (Sandbox Code Playgroud)

如果不考虑安全隐患,那就不是你想做的事情.

  • @RobinPlotnik:安全不仅仅是恶意攻击。假设您的服务器返回错误而不是您期望的数据,并且您的代码像 shell 脚本一样执行该错误。您如何确定错误的随机内容不包含可能造成损坏的内容?例如,HTML 包含大量 >。下一个单词怎么可能恰好命名一个文件? (2认同)

tri*_*eee 9

您不需要或不需要变量.这样做的常见方法是

curl http://example.com/file.cnfg | sh
Run Code Online (Sandbox Code Playgroud)

如果你真的需要在当前shell中执行代码,

source <(curl http://example.com/file.cnfg)
Run Code Online (Sandbox Code Playgroud)

那样做.

关于安全影响的警告不容小觑.如果服务器是恶意的,被劫持的,错误配置的,失败的,或者只是一种非常脾气暴躁的情绪,你需要了解可能出现的问题.

你应该问自己"我可以避免使用变量"(并且,"我可以避免产生外部过程")如果答案是肯定的,那通常就是你应该做的.