相关疑难解决方法(0)

如何在字符串中引用变量扩展以避免分词?

$ myvar="/path to/my directory"
$ sudo bash -c "cd $myvar"
Run Code Online (Sandbox Code Playgroud)

在这种情况下,$myvar由于 的值中存在空格,我如何引用以避免分词myvar

shell bash sudo quoting

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

为什么'sudo -E'不保留export -f导出的函数环境变量?

在脚本.sh中:

#!/bin/bash

func(){
  echo "I am here a func."
}

export -f func
export variable="I am here a variable"

sudo -E bash -c "func ; echo $variable"

Run Code Online (Sandbox Code Playgroud)

输出如下:

bash: func: command not found
I am here a variable
Run Code Online (Sandbox Code Playgroud)
  1. 为什么?
  2. 有什么解决方案可以让我通过 sudo 在新生 shell 中调用函数 [在 script.sh 中声明]?

其实我知道一个方法,比如:

#!/bin/bash

func(){
  echo "I am here a func."
}

FUNC=$(declare -f func)
export variable="I am here a variable"

sudo -E bash -c "$FUNC; func ; echo $variable"

Run Code Online (Sandbox Code Playgroud)

但我觉得它太重了,因为我必须用这种方式注册每个函数。

bash sudo environment-variables function

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

标签 统计

bash ×2

sudo ×2

environment-variables ×1

function ×1

quoting ×1

shell ×1