首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tee命令未附加

Tee命令未附加
EN

Stack Overflow用户
提问于 2021-08-17 20:19:50
回答 1查看 251关注 0票数 0

我正在尝试编写一个名为updateFile.sh的bash脚本。目前的情况如下:

代码语言:javascript
复制
function insertIntoFile(){
    local variable=$1
    local target=$2
    echo "${variable}" | tee -a "${target}";
}

insertIntoFile "export/ foo=bar" "~/.bash_profile"

运行bash -x ./updateFile.sh

为了输出我得到..。

代码语言:javascript
复制
...
+ echo 'export/ foo=bar'
+ tee -a '~/.bash_profile'
export/ foo=bar

但是,当我cat ~/.bash_profile

它仍然是空的给定的字符串。

我尝试过没有斜杠的导出,所以我知道不是这样的,我在堆栈溢出中进行了挖掘,我看到的一切似乎都表明这应该有效,但是我不知道为什么不行,也不知道如何修复它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-18 01:33:34

正如Inian评论的那样,您在双引号中使用“倾斜”:

代码语言:javascript
复制
insertIntoFile "export/ foo=bar" "~/.bash_profile"

由于~没有在双引号内扩展而感到惊讶。使用$HOME变量或删除双引号:

代码语言:javascript
复制
insertIntoFile "export/ foo=bar" "$HOME/.bash_profile"

代码语言:javascript
复制
insertIntoFile "export/ foo=bar" ~/.bash_profile

此外,我还建议使用printf而不是echo,因为echo的各种实现都可能试图解析(阅读: mangle)一个以-n-e开头的"$variable“值。更改这一行:

代码语言:javascript
复制
echo "${variable}" | tee -a "${target}";

对此:

代码语言:javascript
复制
printf '%s\n' "${variable}" | tee -a "${target}";
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68823553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档