bash - 根据 mathrules 在 bash 脚本中相乘

标签 bash shell

所以我有一个练习,我需要计算某个字符串。

例如字符串“|| x ||| + ||”。垂直线代表一个1。所以这个字符串的解需要是8。所以我做了这个脚本:

#!/bin/bash
result=$(echo $1 | tr -d ' ' | sed 's/|/1+/g' | sed 's/++/+/g' | sed 's/+x/x/g' | sed 's/ sed 's/x/*/g' | sed 's/+$//' | sed 's/$/\n/' | bc)

但是当我在字符串示例上执行这个脚本时,我得到的解决方案是 6。 然后我发现这是因为脚本执行了这个:1+1*1+1+1+1+1。所以我需要一种在 (1+1)*(1+1+1)+(1+1) 之间添加括号的方法,但我想不通。

有人能帮帮我吗? 提前致谢!

最佳答案

如果你想坚持使用 sed,那么最好在 做剩下的事情之前加入括号:

result=$(echo $1 | tr -d ' ' | sed -e 's/\(|*\)/(\1)/g' -e 's/|/1+/g' -e 's/+)/)/g' -e 's/x/*/g' | bc)

关于bash - 根据 mathrules 在 bash 脚本中相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33815967/

相关文章:

linux - 在unix awk中将utc时间戳转换为est

linux - 如何使用 while 循环和 if 语句编写单行 shell 脚本

c - 对多个文件使用 gcc

linux - 我如何在 Zsh 中使用 float "delay"?

bash - 在 bash 中,如何分析脚本某些部分的运行时间?

bash - 如何从命令行创建伪终端对

linux - 如何在命令后附加字符串?

linux - 如何使用 Bash 从文件运行命令?

bash - bash变量扩展中出现奇怪的字符

linux - Adobe Flash 中的命令行调用