在bash中
echo ${!X*}
Run Code Online (Sandbox Code Playgroud)
将打印名称以"X"开头的变量的所有名称.
是否可以使用任意模式获得相同的结果,例如获取名称在任何位置包含"X"的变量的所有名称?
使用可以将环境简单地输出为可运行的shell脚本
env > my_env
Run Code Online (Sandbox Code Playgroud)
......后来在另一个剧本......
set -a
source my_env
Run Code Online (Sandbox Code Playgroud)
这适用于最琐碎的情况,但如果任何特殊的字符或空格在env中则失败.
我如何修复上面的脚本,以便它可以用于这样的东西a='"'"'"?
我有一个bash shell脚本,我通常将其源码发送到我的shell中,定义了许多环境变量,这些变量不会被导出.我不想:
我想将相同的shell脚本源到makefile的环境中,以便我可以访问这些变量.这可能吗?我怎样才能做到这一点?理想情况下我会在makefile中执行:
source setup-env.sh
Run Code Online (Sandbox Code Playgroud)
没有sourcemakefile的命令,但可能是等价的东西?我可以使用任何特殊的黑客来模拟相同的效果吗?
作为一个实例,我.bashrc使用以下方式的相对路径,虽然我的问题是关于使用的任何临时变量源其他脚本.bashrc.
DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $DIR/.somefile
现在我把DIR每一个壳弄得乱七八糟.没有明确unset DIR的结尾.bashrc,有没有办法限制变量的范围?
[ 编辑 ]要查看列表:( set -o posix ; set ) | less