Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将变量导入bash脚本?_Bash - Fatal编程技术网

将变量导入bash脚本?

将变量导入bash脚本?,bash,Bash,我找不到任何关于如何将单个变量导入bash脚本的信息。从另一个文件导入变量是唯一的方法吗?我想我会创建一个临时文件temp.txt,其中有一行 MYTEMPVAR=something 我希望能够从表单触发bash脚本,因此每次调用bash脚本时,它都会有不同的值。可以这样做吗?在运行bash脚本时,可以内联指定变量。var.sh的内容: #!/bin/bash echo "The date is $mydate" 命令: $ mydate="Tuesday 29th" ./var.sh T

我找不到任何关于如何将单个变量导入bash脚本的信息。从另一个文件导入变量是唯一的方法吗?我想我会创建一个临时文件
temp.txt
,其中有一行

MYTEMPVAR=something

我希望能够从表单触发bash脚本,因此每次调用bash脚本时,它都会有不同的值。可以这样做吗?

在运行bash脚本时,可以内联指定变量。
var.sh
的内容:

#!/bin/bash

echo "The date is $mydate"
命令:

$ mydate="Tuesday 29th" ./var.sh
The date is Tuesday 29th

$ mydate=$(date) ./var.sh
The date is 29 May 2018 17:27:39

运行bash脚本时,可以内联指定变量。
var.sh
的内容:

#!/bin/bash

echo "The date is $mydate"
命令:

$ mydate="Tuesday 29th" ./var.sh
The date is Tuesday 29th

$ mydate=$(date) ./var.sh
The date is 29 May 2018 17:27:39

使用变量设置运行另一个脚本的问题是,默认情况下,这是在子流程中完成的。父shell将不知道子流程中的环境变量(或当前durectory)。
您需要的是在没有额外进程的情况下启动该脚本。 您可以告诉bash在当前环境中使用
sourceotherscript
或更短的
运行脚本。其他脚本

请尝试以下命令:

mytempvar="inital value" # variable in lowercase, uppercase is reserved for the shell
echo "mytempvar=something" > temp.sh
chmod +x temp.sh
./temp.sh # starts in a subprocess, the changed value is lost
echo "${mytempvar}"
source temp.sh # run it in the current shell
echo "${mytempvar}"
mytempvar="new value"
. temp.sh # Just like source, other syntax
echo "${mytempvar}"

使用变量设置运行另一个脚本的问题是,默认情况下,这是在子流程中完成的。父shell将不知道子流程中的环境变量(或当前durectory)。
您需要的是在没有额外进程的情况下启动该脚本。 您可以告诉bash在当前环境中使用
sourceotherscript
或更短的
运行脚本。其他脚本

请尝试以下命令:

mytempvar="inital value" # variable in lowercase, uppercase is reserved for the shell
echo "mytempvar=something" > temp.sh
chmod +x temp.sh
./temp.sh # starts in a subprocess, the changed value is lost
echo "${mytempvar}"
source temp.sh # run it in the current shell
echo "${mytempvar}"
mytempvar="new value"
. temp.sh # Just like source, other syntax
echo "${mytempvar}"

你的最终目标是什么?告诉我们你想做什么,这样我们就可以避免冲突。有很多很多种方法可以将值传递给脚本。命令行参数、标准输入、源配置文件等。对于“每次调用bash脚本时,[变量]都会有不同的值”,您的算法是什么?这听起来像是应该内置到脚本本身中,而不是依赖外部资源。这通常是通过在脚本中“寻源”参数文件来完成的。谢谢您的评论。它是一个用于创建新linux用户和执行其他相关任务的脚本。所以,我有一个HTML表单,我想用用户名和密码来完成表单。显然,这些不能硬编码到脚本中。我还应该说,该脚本将由PHP调用。您的最终目标是什么?告诉我们你想做什么,这样我们就可以避免冲突。有很多很多种方法可以将值传递给脚本。命令行参数、标准输入、源配置文件等。对于“每次调用bash脚本时,[变量]都会有不同的值”,您的算法是什么?这听起来像是应该内置到脚本本身中,而不是依赖外部资源。这通常是通过在脚本中“寻源”参数文件来完成的。谢谢您的评论。它是一个用于创建新linux用户和执行其他相关任务的脚本。所以,我有一个HTML表单,我想用用户名和密码来完成表单。显然,这些不能硬编码到脚本中。我还应该说,该脚本将由PHP调用。