当前位置: 首页 > 知识库问答 >
问题:

bash忘记导出变量

夏青青
2023-03-14

我甚至无法从脚本中导出最简单的变量来在bash中工作——我错了什么?

文件test.sh:

#!/bin/bash
echo $ttt
ttt="fffalse"
export ttt
echo $ttt

bash测试:

hpek@hpek:~/temp$ export ttt="tttrue"
hpek@hpek:~/temp$ ./test.sh 
tttrue
fffalse
hpek@hpek:~/temp$ ./test.sh 
tttrue
fffalse
hpek@hpek:~/temp$ 

编辑:

我现在从答案中知道,这行不通-但是,如何在进程之间记住单个变量呢?我需要将其存储在文件中吗?

共有2个答案

公孙志
2023-03-14

导出在当前进程中起作用,之后生成的任何子进程;它不跨越过程边界(父进程、现有子进程、不相关的进程)。环境的行为类似于一种阴影参数列表,而不像文件系统或邮箱。

苏季同
2023-03-14

./test.shbashtest.sh相同

实际上,每个运行的外壳脚本都是父外壳的子进程(子进程)。
并且子进程不能将env-var导出到它的父进程。

您可以尝试这样做(在相同的环境中运行):

. test.sh
 类似资料:
  • 我有两个shell脚本: 第一个:<代码>1。sh,其内容如下: 第二:<代码>2。sh,其内容如下: 两者都具有执行权限。当我运行<代码>2时。sh,我希望环境变量PROP由1设置和导出。sh,对。这里怎么了?

  • 问题内容: 如果我有一个字符串变量,谁的值是如何使用空格作为分隔符来对此进行标记?我会用吗? 问题答案: 使用外壳程序对未加引号的变量的自动标记化: 如果要更改定界符,则可以设置变量,该变量代表内部字段分隔符。的默认值是(空格,制表,换行)。 (请注意,在第二个示例中,我在第二行周围添加了括号。这创建了一个子shell,因此对的更改不会持续。您通常不想永久更改,因为它可能会对毫无疑问的shell命

  • 忘记密码时 若要使用此机能,可能需先更新系统软件。 忘记密码时,请遵循以下方法重新设定密码。 1. 进入主选单的(PlayStation®Netrowk)后,选择(账户管理)或(PlayStation®Store)。 2. 显示需输入登入ID(电子邮件地址)与密码的画面时,选择[忘记密码时]。 3. 输入登入ID(电子邮件地址)及出生日期。 4. 选择变更密码的方法。 回答[密码提示问题]来变更密

  • 问题内容: 将从大型文本文件提取的列表中返回最大的列表,但是如何将输出存储为变量? 问题答案: 使用命令替换: 另外,出于可移植性考虑,我建议始终将用作参数。我遇到了一些无法使用的化身。

  • 问题内容: 我是bash脚本的新手。我想将sql-query输出保存在变量中,但是 实际上,我必须使用以下命令为每个查询连接到mysql: 并希望将每个输出保存在单独的变量中 示例查询是: 到 谢谢你 问题答案: 从bash脚本中获取-从数据库中选择到变量中,您可以将查询结果读取到一个变量中。 例子 用法 是用于输出的bash命令。然后可以将其拆分为单独的变量: 您可以将这两个命令组合成一个命令:

  • 我想从文件中导出变量。这是我的文件 我使用此while循环导出该文件上的所有变量 所有变量都成功导出,除了我得到了这个值,(期望值是)。 我的问题是,为什么在使用时它不起作用,但如果我们手动导出