gpt4 book ai didi

linux - shell 脚本 : replacing and adding characters in a string

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:19:31 24 4
gpt4 key购买 nike

我是 shell 脚本的新手,在执行以下操作时遇到问题:

我有这个:

MY_MACR0_VALUE="123ABCD"

我想把它转换成这样:

#define MY_MACR0_VALUE "123ABCD"

我这样做:

//that string is coming from command line 

newvar=$(echo "$1" | tr '=' ' ')

echo "#define $newvar" >> MacroFile.h

我得到这个:

#define MY_MACR0_VALUE 123ABCD

代替

#define MY_MACR0_VALUE "123ABCD"

缺少双引号。

如何修复我的脚本以获得所需的结果?

编辑

我可能还有一些来自命令行的无值宏,比如

INCLUDE_SOMETHING

应该改成

#define INCLUDE_SOMETHING

所以我不需要更改它们中的任何内容。

最佳答案

问题是,shell 去掉了引号,所以脚本甚至看不到它们。如果您对参数中的引号进行转义,则可以使用您的脚本:

sh script.sh MY_MACR0_VALUE=\"123ABCD\"

或者您可以在脚本中使用这一行:

echo "#define $(sed '/=/{s/=/ "/;s/$/"/}' <<< $1)" >> MacroFile.h

关于linux - shell 脚本 : replacing and adding characters in a string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24383601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com