相关疑难解决方法(0)

#./和#之间的区别../

执行脚本之间的区别是什么

# ./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)

我知道结果,但我不确定实际发生了什么

谢谢

linux bash

4
推荐指数
1
解决办法
158
查看次数

Linux shell bug?管道中的变量赋值不起作用

为什么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吗?:)

请帮忙.

linux shell

3
推荐指数
1
解决办法
432
查看次数

在调用 shell 时设置环境变量的最佳方法

我正在编写一个需要能够设置和使用上下文的实用程序。我希望它在 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>)。
  • 保存到一个临时文件,其名称基于 shell 的 PID。这在大多数情况下都可以工作,但删除文件不会自动发生,因此它可能会一直存在直到重新启动(即,可能在许多机器上永远存在)。

还有其他想法吗?谢谢!

注意:以上示例使用 BASH 语法,但在大多数 shell 中都有等价物。

linux shell environment environment-variables

3
推荐指数
1
解决办法
1738
查看次数

增加环境变量

我需要通过以下步骤增加环境变量:

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。

谢谢你的时间。

linux bash shell sh

3
推荐指数
1
解决办法
3304
查看次数

在perl中发出系统命令

我很难搞清楚为什么以下命令没有在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)

谢谢!

unix bash shell perl

1
推荐指数
1
解决办法
801
查看次数

如何在 Linux 中更新环境变量?

我定义了一个 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。

知道我在这里错过了什么吗?谢谢 !

linux bash

1
推荐指数
1
解决办法
5548
查看次数

如何将整数设置为环境变量?

我试图设置一个环境变量,如下所示,但是行有一个整数变量并运行到以下错误,如何解决这个问题?还是有更好的方法来使用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)

python windows batch-file

1
推荐指数
1
解决办法
7647
查看次数

AWS SSM Run Command 的环境变量

我将 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)

安全性很重要,因此我不想只将变量存储在脚本中。

environment-variables amazon-web-services aws-ssm

1
推荐指数
1
解决办法
9034
查看次数

设置环境变量,以便可以在我的程序之外读取

这是我的脚本:

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应该允许我这样做?

python linux

0
推荐指数
1
解决办法
885
查看次数