Linux 如何从b=";中提取值2;a=2“;并将其分配给Bash中的变量a

Linux 如何从b=";中提取值2;a=2“;并将其分配给Bash中的变量a,linux,bash,Linux,Bash,只是个愚蠢的问题。提供一个代码片段 b="a=2" 如何提取值2并将其分配给变量a a=${b#a=} 取$b的值,删除前导文本a=;将剩下的(2)分配给a 取$b的值,删除前导文本a=;将剩下的(2)分配给a如果您正在寻找一个shell实用程序来执行类似的操作,可以使用cut命令 以您的示例为例,请尝试: 回声“abcdefg”|切口-c3-5 其中-cN-M告诉cut命令返回N到M列(包括) 参考: 和 如果您正在寻找一个shell实用程序来执行类似的操作,您可以使用cut命令 以您的示

只是个愚蠢的问题。提供一个代码片段

b="a=2"
如何提取值2并将其分配给变量a

a=${b#a=}
$b
的值,删除前导文本
a=
;将剩下的(
2
)分配给
a


$b
的值,删除前导文本
a=
;将剩下的(
2
)分配给
a

如果您正在寻找一个shell实用程序来执行类似的操作,可以使用cut命令

以您的示例为例,请尝试:

回声“abcdefg”|切口-c3-5

其中-cN-M告诉cut命令返回N到M列(包括)

参考: 和

如果您正在寻找一个shell实用程序来执行类似的操作,您可以使用cut命令

以您的示例为例,请尝试:

回声“abcdefg”|切口-c3-5

其中-cN-M告诉cut命令返回N到M列(包括)

参考: 和

您只需评估代码即可

eval $b

你可以评估一下代码

eval $b

我以提供丑陋的解决方案而闻名,所以我不会让你失望-

[jaypal:~/Temp] a=$(awk '{print $(NF-1)}' FS='["=]' <<< 'b="a=2"')
[jaypal:~/Temp] echo $a
2

我以提供丑陋的解决方案而闻名,所以我不会让你失望-

[jaypal:~/Temp] a=$(awk '{print $(NF-1)}' FS='["=]' <<< 'b="a=2"')
[jaypal:~/Temp] echo $a
2

另一个便携式解决方案

IFS='='
set -- $b
let "$1=$2"

另一个便携式解决方案

IFS='='
set -- $b
let "$1=$2"


嗯?你想要一个bash脚本,还是一个编译过的程序?只需要bash。你有什么想法吗?你想要一个bash脚本,还是一个编译过的程序?只需要bash。你有什么想法吗?他想要他的变量
a
,而不是
var
:)@JonathanLeffler我迫不及待地想等到我达到100K时得到crystalball特长代表=)@SiegeX,或者你和我可以联合起来,否决Jon直到目前为止的所有答案,并把他控制在100K以下:PHe想要他的变量
a
,not
var
:)@JonathanLeffler我迫不及待地想等到我达到100K rep=)@SiegeX或者你,我可以联合力量,投票否决Jon的每一个答案,直到目前为止,并将其降到100K以下:PUsing
cut
是一种繁重的方式,因为shell有内置的功能可以做到这一点。使用
bash
并仍然使用
cut
,您可以使用
a在管道上进行保存=$(cut-c3你也可以检查这一点。)我用
cut
谷歌搜索是一种繁重的方法,因为shell有内置的功能可以做到这一点。使用
bash
并且仍然使用
cut
,你可以使用
a=$(cut-c3你也可以检查这一点。)我用谷歌搜索直到有人这样做
b=“rm rf/;a=2”
。俗话说,如果eval是答案,那么你问错了question@SergeX-非常正确,但如果它不是一个使用参数的字段(受信任),则不是问题。除非有人这样做
b=“rm-rf/;a=2”
。俗话说,如果eval是答案,那么你问错了question@SergeX-非常正确,但如果不是一个使用论点的领域(受信任),则不是问题。您可能会让您的公关人员将您的工作重新命名为密集、可移植,而不是丑陋。:-+1表示密集、可移植的答案;)虽然如果对
FS
使用单引号,可以稍微降低强度,因此不必转义双引号并在末尾设置
FS
,这样就不需要
-v
a=$(awk'{print$(NF-1)}'FS='[“=]“谢谢@SiegeX..已经更新了答案…对于胆小的人来说,还有一个
不那么紧张的
解决方案。我的20个解决方案获得了28张赞成票,但没有被接受的答案。我想知道为什么?:)你可能会让你的公关人员将你的工作重新命名为紧张的、可移植的,而不是丑陋的。:-)+1表示强度和可移植的答案;)虽然如果对
FS
使用单引号,可以使其强度稍微降低,因此不必转义双引号并在末尾设置
FS
,这样就不需要
-v
a=$(awk'{print$(NF-1)}'FS='[“=]“谢谢@SiegeX..已经更新了答案…对于胆小的人来说,还有一个
不那么激烈的
解决方案。我正在运行的20个解决方案获得了28票的支持,但没有被接受的答案。我想知道为什么?:)