执行脚本之间的区别是什么
# ./test
Run Code Online (Sandbox Code Playgroud)
和
# . ./test
Run Code Online (Sandbox Code Playgroud)
例如,test是简单的脚本
#!/bin/bash
export OWNER_NAME="ANGEL 12"
export ALIAS="angelique"
Run Code Online (Sandbox Code Playgroud)
我知道结果,但我不确定实际发生了什么
谢谢
为什么FILE_FOUND在这个bugger的末尾为0:
FILE_FOUND=0
touch /tmp/$$.txt
ls -1 /tmp/$$.* 2>/dev/null | while read item; do
FILE_FOUND=1
echo "FILE_FOUND = $FILE_FOUND"
done
echo "FILE_FOUND = $FILE_FOUND"
rm -f /tmp/$$.txt 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
?? !!
在Unix上,FILE_FOUND保持为1(应该如此),但在Linux(RedHat,Cygwin,..)上,它会跳回到0!
它是Linux shell功能,而不是bug吗?:)
请帮忙.
我正在编写一个需要能够设置和使用上下文的实用程序。我希望它在 shell 中使用环境变量,以便它可以记住当前在调用之间所处的上下文。理想情况下,我想从实用程序本身设置这个环境变量。就像是:
mytool set-context <context>
mytool do-stuff # Aware of <context>
Run Code Online (Sandbox Code Playgroud)
我希望它的行为如下:
export MYTOOL_CONTEXT=<context>
mytool do-stuff # Aware of <context>
Run Code Online (Sandbox Code Playgroud)
现在,程序实际上不可能在调用 shell 的环境中设置环境变量(在 SO here 中有介绍)。但是,这就是我想要的行为,我正在寻找近似值或解决方法。
我想到的一些想法:
<context>,而是设置为从它派生的某个字符串)。那看起来像export MYTOOL_CONTEXT=$(mytool get-context-var <context>).$(mytool set-context <context>),命令的输出实际执行的地方(输出类似于export MYTOOL_CONTEXT=<context>)。还有其他想法吗?谢谢!
注意:以上示例使用 BASH 语法,但在大多数 shell 中都有等价物。
我需要通过以下步骤增加环境变量:
envar=1
export envar
sh script_incrementation
echo $envar
Run Code Online (Sandbox Code Playgroud)
其中 script_incrementation 包含如下内容:
#! /bin/sh
envar=$[envar+1] #I've tried also other methods of incrementation
export envar
Run Code Online (Sandbox Code Playgroud)
无论我做什么,在退出脚本后,变量仍保持其初始值 1。
谢谢你的时间。
我很难搞清楚为什么以下命令没有在perl中执行.
system(". ./setenv.sh");
Run Code Online (Sandbox Code Playgroud)
我尝试了其他替代品
ALT 1 = system ".", "./setenv.sh";
ALT 2 = `. ./setenv.sh`;
Run Code Online (Sandbox Code Playgroud)
不知道我做错了什么..有什么想法吗?
编辑:我想到了这里提到的一些想法,这就是我做的..
system(". ./setenv.sh && <other commands that I required the env for here>");
Run Code Online (Sandbox Code Playgroud)
谢谢!
我定义了一个 Env 变量:
export NBR_PROCESS=2
基本上我应该能够更新变量,但是当我执行以下脚本时,每次运行都会得到相同的结果:
#!/bin/bash
echo "Script 2: Before decrement : $NBR_PROCESS"
export NBR_PROCESS=$(($NBR_PROCESS - 1))
echo "Script 2: After decrement : $NBR_PROCESS"
Run Code Online (Sandbox Code Playgroud)
在每次执行时,我都会得到以下相同的结果:
Script 2: Before decrement : 2
Script 2: After decrement : 1
Run Code Online (Sandbox Code Playgroud)
我想做的是通过运行脚本来减少变量 NBR_PROCESS。
知道我在这里错过了什么吗?谢谢 !
我试图设置一个环境变量,如下所示,但是行有一个整数变量并运行到以下错误,如何解决这个问题?还是有更好的方法来使用python设置环境变量
row = 399
os.environ['BUILD_VER'] = row
Run Code Online (Sandbox Code Playgroud)
错误:-
os.environ['BUILD_VER'] = row
File "C:\Python27\lib\os.py", line 420, in __setitem__
putenv(key, item)
TypeError: must be string, not int
Run Code Online (Sandbox Code Playgroud) 我将 AWS SSM Run Command 与 AWS-RunShellScript 文档结合使用,在 AWS Linux 1 实例上运行脚本。该脚本的一部分包括使用环境变量。当我自己运行脚本时,一切都很好。但是当我用SSM运行脚本时,它看不到环境变量。该变量需要传递给 Python 脚本。我最初尝试 os.environ['VARIABLE'] 没有效果。
我知道AWS SSM使用root权限,因此我在root ~/.bashrc文件中放置了一行导出变量的行,但它仍然看不到该变量。我自己运行root用户就可以看到。AWS SSM 是否无法使用环境变量,或者我没有正确导出它?如果不可能,我将尝试使用 AWS KMS 来存储我的变量。
~/.bashrc
export VARIABLE="VALUE"
Run Code Online (Sandbox Code Playgroud)
脚本文件
"$VARIABLE"
Run Code Online (Sandbox Code Playgroud)
安全性很重要,因此我不想只将变量存储在脚本中。
这是我的脚本:
try:
os.environ['CONSOLE'] = '1'
while True:
...
except KeyboardInterrupt:
del os.environ['CONSOLE']
Run Code Online (Sandbox Code Playgroud)
我正在尝试设置一个名为的环境变量CONSOLE。在此程序运行时,该变量应该存在,一旦我用Ctrl + C退出该变量,该变量就会消失。
但是,当我让程序运行并尝试从外壳打印它时,我得到:
$ echo $CONSOLE
CONSOLE: Undefined variable.
Run Code Online (Sandbox Code Playgroud)
我似乎也无法从我的PHP脚本中读取它。我的变量在哪里?我以为os.environ应该允许我这样做?