相关疑难解决方法(0)

使用bash/sed搜索和替换文件中的变量

我正在尝试编写一个bash脚本(script.sh)来搜索和替换in​​put.sh文件中的一些变量.但是我只需要修改variable_list文件中存在的变量,并保留其他变量.

variable_list

${user}  
${dbname}
Run Code Online (Sandbox Code Playgroud)

input.sh

username=${user}  
password=${password}  
dbname=${dbname}
Run Code Online (Sandbox Code Playgroud)

预期的输出文件

username=oracle  
password=${password} > This line won't be changed as this variable(${password}) is not in variable_list file
dbname=oracle
Run Code Online (Sandbox Code Playgroud)

以下是我尝试使用的脚本,但我无法找到正确的sed表达式

script.sh

export user=oracle  
export password=oracle123  
export dbname=oracle

variable='variable_list'  
while read line ;  
do  
 if [[ -n $line ]]     
 then  
  sed -i 's/$line/$line/g' input.sh > output.sh  
 fi  
done < "$variable"    
Run Code Online (Sandbox Code Playgroud)

bash sed

5
推荐指数
1
解决办法
2万
查看次数

将函数局部变量导出到环境

考虑以下代码:

#!/usr/bin/bash

t_export() {
  declare dummy="Hello"
  export dummy
  echo dummy: $dummy
  echo printenv dummy: $(printenv dummy)
}

t_export
echo dummy: $dummy
echo printenv dummy: $(printenv dummy)
Run Code Online (Sandbox Code Playgroud)

输出:

dummy: Hello
printenv dummy: Hello
dummy:
printenv dummy:
Run Code Online (Sandbox Code Playgroud)

你如何解释这一点?我认为环境始终是全局的,因此变量dummy在函数外部也是可见的。

bash environment-variables

5
推荐指数
2
解决办法
2783
查看次数

不带等号的导出变量有什么作用?

我的 Linux 机器上有一个 bash 脚本,其中包含以下两行:

[ -r /etc/java/java.conf ] && . /etc/java/java.conf
export JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

导出JAVA_HOME有什么作用?通常我认为 export VARIABLE_NAME=something 将变量设置为某个值。

运行export JAVA_HOME而不设置它会做什么?

我尝试在命令行上运行它,但没有任何反应。

bash

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

如何在bash -c命令中插入变量

我可以做以下事情:

$ FOO="text"
$ echo $FOO
$ text
Run Code Online (Sandbox Code Playgroud)

但是如何将其包装在bash -c构造中?我尝试过但失败了:

$ FOO="text"
$ bash -c 'echo $FOO'
$ # return nothing
Run Code Online (Sandbox Code Playgroud)

我问这个的原因是因为我需要执行另外需要包装的第三方代码 bash -c

unix linux bash

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

您是否需要在 bash 配置文件/zshrc 中包含环境变量的导出?

您是否需要在 Bash 配置文件/zshrc 中包含环境变量的导出?

我的终端使用 Z shell (Zsh),在我的.zshrc文件中我有两行:

varOne="foo"

export varTwo="bar"
Run Code Online (Sandbox Code Playgroud)

echo $varOne当我在终端内回显任一变量(例如:)时,会输出正确的值。

export那么在文件内部添加环境变量声明前缀有什么区别吗.zshrc

bash zsh environment-variables zshrc oh-my-zsh

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

Bash中的导出路径

有什么区别:

PATH=$PATH:/Projects/persevere/bin
Run Code Online (Sandbox Code Playgroud)

export PATH=$PATH:/Projects/persevere/bin
Run Code Online (Sandbox Code Playgroud)

我认为两者都有效.

linux bash ubuntu

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

标签 统计

bash ×6

environment-variables ×2

linux ×2

oh-my-zsh ×1

sed ×1

ubuntu ×1

unix ×1

zsh ×1

zshrc ×1