草庐IT

env_variable

全部标签

linux - Bash 脚本 - 遍历关联数组列表的 "variable"变量名

我有一个关联数组的变量列表,我想遍历它并检索它们的键/值对。我通过列出所有键并获取值来遍历单个关联数组,即。forkeyin"${!queue1[@]}"doecho"key:$key"echo"value:${queue1[$key]}"done棘手的部分是关联数组的名称是可变变量,例如给定count=5,关联数组将被命名为queue1、queue2、queue3、queue4、queue5。我正在尝试根据计数替换上面的序列,但到目前为止,括号和eval的每种组合都没有产生比糟糕的替换错误更多的错误。例如下面:forcountin{1,2,3,4,5}doforkeyin"${!qu

linux - 为什么 env 不打印 PS1 变量?

当我们打印PS1的值时,它被设置为:$echo$PS1[\u@\h\W]\$我们可以使用env命令来打印环境变量。为什么它不列出PS1变量?$env|grepPS1#Nooutputhere 最佳答案 因为PS1不是(通常,在您的特定情况下)环境变量。在bash实例中设置了许多变量,您可以列出这些变量:$setBASH=/bin/bashBASHOPTS=checkwinsize:cmdhist:…BASH_ALIASES=()BASH_ARGC=()..SHLVL=1SSH_AGENT_PID=853SSH_AUTH_SOCK=/

linux - 我如何在 make 目标之间传递 ENV 变量

我在makefile中有这样的target1:exportvar1=test$(MAKE)target2target2:echo$(var1)这是空的我有其他依赖项,所以我想在第一个目标中设置变量,然后所有子依赖项都应该能够访问它编辑:.ONESHELL:target1:exportvar1=testecho$(var1)输出maketarget1exportvar1=testecho 最佳答案 默认情况下,make为每个配方调用一个新的shell环境,第一行的exported变量不在第二行的范围内。您可以通过多种方式解决此问题:使

linux - bash:设置数组 env 变量并从任何 shell 脚本取消引用它失败

我以这种方式将数组设置为环境变量例如。脚本test.sh在测试.sh#!/bin/bashexportSTRING=("str1""str2")源码测试.sh现在在脚本test-1.sh#!/bin/bashecho${STRING[0]}响应什么都没有,只是一个空行,然而,如果我尝试在test.sh中设置STRING="str1"并在test-1.sh中执行echo$STRING,这有效。测试仅从root用户执行,现在如何将数组设置为环境变量,以便我可以根据需要调用数组的元素?早些时候,我什至尝试修改/etc/bashrc,但也没有产生任何积极的结果。我需要将数组设置为env变量,因

C Linux : Global variable located in shared library as singleton

如果库被多个进程使用,是否可以将位于共享库(.so)中的全局变量用作单例?例如,初始值为0,进程1递增var,然后proc2递增val并打印它。到目前为止,我的实验表明,这两个进程都保留了变量的副本,如果第一个对其进行递增,第二个仍将读取0。因此该行为不像WindowsDLL...我在这里的一篇文章中读到,如果全局变量不是静态的(在lib中)并且它在libheader中声明为extern,则var对于所有进程都是唯一的。但到目前为止我还没有能够完成这个-var仍然是每个进程的副本。有人可以对此提供很好的解释吗?以及如何去做... 最佳答案

linux - 特拉维斯 : define OS specific environment variables

我在我的项目中使用Golang并使用Travis-CI来构建它。我想在每个操作系统(OSX、Linux、Windows)上构建它,所以我想使用GIMME_OS和GIMME_ARCH环境变量(fromGIMMEproject)但是问题是Darwin不足以支持我的项目,所以我必须在mac上本地构建我的项目。我的方法是将OSX操作系统构建为VM(travis直接从.travis.yml文件支持这一点)并使用交叉编译(GIMME)linux64、linux386和windows在linux上构建。现在,每次我定义一个环境变量时,它都会为我的构建矩阵创建一个新列。我想要仅在linux构建部分中保

php - undefined variable argc PHP

我正在尝试执行这段代码:functionmain(){if($argc但我收到以下错误:PHPNotice:Undefinedvariable:argcin/home/me/test.phponline15我以为$argv和$argc是全局变量。我怎样才能摆脱这个错误?我正在从命令行运行它。 最佳答案 添加一个global$argc,$argv;之后functionmain(){这些变量在全局范围内,但不在您的函数范围内。global关键字导入它们。 关于php-undefinedvar

linux - bash 命令 : What's the difference between a variable and an alias?

我是Linux新手,从基础开始。--我以为别名是用来创建命令的快捷方式的。但是我使用变量(在Ubuntu中)尝试了以下操作并且仍然有效!$foo="mkdirDirectory"$$foo#thiswillcreateadirectorynamedDirectory使用别名:$aliasbar="mkdirDirectory"$bar#createsaDirectorynameddirectory它应该是这样工作的吗?非常感谢您的回答:) 最佳答案 变量比别名更通用。变量可以在命令行中的任何地方使用(例如作为程序参数的一部分),而别

linux - 鞭尾鱼 : How to redirect output to environment variable?

我正在尝试使用whiptail因为它是dialog的轻量级替代品并且似乎在大多数系统中默认安装(即,如果它被“忘记”或默认未安装,人们不必到处安装它)。我检查了question#1562666对于此处的几个示例,但我正在寻找一种重定向输出的替代方法,以便设置一个环境变量,而不仅仅是写入磁盘。例如,当我尝试使用对话框时,这有效(我看到了对话框,并且设置了一个环境变量):result=$(dialog--output-fd1--inputbox"Entersometext"1030)echoResult=$result但是,当使用whiptail代替对话框时,这不起作用,因为对话框永远不会

android - [错误 : Failed to find 'ANDROID_HOME' environment variable. 尝试手动设置

我在Linuxmint17中使用Cordova我安装了androidsdk,cordova,androidstudio,nodejs4问题来了当我想在codova中构建应用程序并在终端上运行时:sudocordova构建android显示Runningcommand:/home/tnt/hello12/platforms/android/cordova/build[Error:Failedtofind'ANDROID_HOME'environmentvariable.Trysettingsettingitmanually.Failedtofind'android'commandinyo