在shell/bash脚本中使用文件之间的变量
这个问题已经贴在这里很多次了,但它似乎从来没有回答过我的问题 我有两个脚本。第一个脚本包含一个或多个变量,第二个脚本需要这些变量。第二个脚本还需要能够更改第一个脚本中的变量 我对寻源(包含变量的第一个脚本运行第二个脚本)或导出(使用环境变量)不感兴趣。我只是想确保第二个脚本可以读取和更改(获取和设置)第一个脚本中可用的变量在shell/bash脚本中使用文件之间的变量,bash,shell,Bash,Shell,这个问题已经贴在这里很多次了,但它似乎从来没有回答过我的问题 我有两个脚本。第一个脚本包含一个或多个变量,第二个脚本需要这些变量。第二个脚本还需要能够更改第一个脚本中的变量 我对寻源(包含变量的第一个脚本运行第二个脚本)或导出(使用环境变量)不感兴趣。我只是想确保第二个脚本可以读取和更改(获取和设置)第一个脚本中可用的变量 (注:如果我误解了采购或导出的工作原理,并且它适用于我的场景,请让我知道。我对这些方法并不完全熟悉,在我读过之后,我只是不认为这些事情会达到我想要的效果)环境变量是每个流程的
(注:如果我误解了采购或导出的工作原理,并且它适用于我的场景,请让我知道。我对这些方法并不完全熟悉,在我读过之后,我只是不认为这些事情会达到我想要的效果)环境变量是每个流程的。一个进程不能修改另一个进程中的变量。你所要求的是不可能的
脚本的常用解决方法是寻源,它通过在同一个shell进程中运行两个脚本来工作,但您说您不想这样做。因此,在web上进行了长时间搜索并进行了大量尝试后,我终于找到了某种解决方案。事实上,这很简单 不过,有一些先决条件
写
sudo sed-i的/^\(VARNAME=\)./\1VALUE/'FILENAME
因此,即在文件中将名为Var1
的变量设置为5
test.ini
:sudo sed-i的/^\(Var1=\)./\15/'test.ini
阅读
sudo grep-Po'(?我也考虑过这一点。我将使用文件作为变量。例如,在脚本1中,您用于将变量值写入文件:
echo $varnum1 > /home/username/scriptdir/vars/varnum1
echo $varnum2 > /home/username/scriptdir/vars/varnum2
在脚本2中,用于将文件中的值读回变量:
$varnum1=$(cat /home/username/scriptdir/vars/varnum1)
$varnum2=$(cat /home/username/scriptdir/vars/varnum2)
两个脚本都可以在任何给定时间读取或写入变量。理论上,两个脚本可以尝试同时访问同一个文件,我不确定会发生什么,但由于每个文件只包含一个值,读取或写入的时间应该非常短。
为了减少这些时间,您可以使用ramdisk
我认为这比脚本互相编辑要好得多(yuk!)。脚本的实时编辑可能会弄乱脚本,只有在编辑完成后再次启动脚本时才有效
祝你好运!Hmm,这太不幸了。有办法解决吗?对于脚本来说,有来源。除此之外,环境变量没有好的解决办法。选择另一种IPC机制,就像另一个人说的,你排除了在shell脚本之间进行通信的唯一方法。这很好;如果你想规则的话如果你想做你所描述的事情,你只能通过环境变量进行交流(将信息传递到另一个脚本中,而不作为命令行参数提供)。如果被调用的脚本必须修改调用脚本环境,则除了点画(或“寻源”)之外,您没有其他重要的选择另一个脚本。你可以考虑第一个脚本执行器第二个,然后第二个脚本Excel A第三或一个新的交互式shell——新的shell将从第一个继承环境,第二个被修改。但是这不太可能完全令人满意。你也可以考虑使用INI文件来存储数据。寻源模型很可能是第二个(使用变量)脚本寻源第一个(定义变量)脚本。因为第一个脚本本质上是第二个脚本的“配置”文件。@Lambic这是怎么工作的?我从来没有听说过在shell脚本中使用ini文件。
echo $varnum1 > /home/username/scriptdir/vars/varnum1
echo $varnum2 > /home/username/scriptdir/vars/varnum2
$varnum1=$(cat /home/username/scriptdir/vars/varnum1)
$varnum2=$(cat /home/username/scriptdir/vars/varnum2)