bash - bash 开关中的算术表达式
问题描述
我希望这个脚本加载字符串参数,检查它的长度,如果它的长度是 1,然后将 1 分配给一个变量,否则分配一个算术表达式给它。我在使用 bash 语法时遇到问题,无法使其正常工作。任何帮助,将不胜感激。这是我的尝试:
#!/bin/bash
stringArg=$1
let myVariable=1
case "${#stringArg}" in
1) myVariable=1 ;;
*) myVariable="${#stringArg}*2-2" ;;
esac
echo $myVariable
./test.sh 123
用输出运行它3*2-2
,但我希望它打印4
。
解决方案
您只是将表达式分配给变量,而不是评估后的实际值。
您可以以各种方式评估表达式,$(())
等等bc
。
#!/bin/bash
stringArg=$1
let myVariable=1
case "${#stringArg}" in
1) myVariable=1 ;;
*) myVariable="${#stringArg}*2-2" ;;
esac
echo $(( $myVariable ))
推荐阅读
- jquery-ui - 加载页面时,Jquery-Ui Datepicker 已经可见,而不是按预期点击
- ansible - Ansible:循环遍历文件全局列表
- c# - 如何根据 C# 中的属性实例化集合/类
- bash - Grep - 如何仅输出捕获组的内容
- ruby - 如何在logstash过滤器中使用redis?
- webpack - 如何从 Webpack 4 中的加载程序上下文访问编译器/编译/模块
- javascript - 使用扩展运算符使用反应挂钩更新地图函数内部的状态
- angular - mat 手风琴不适用于组件选择器
- javascript - setTimeout 调用堆栈问题
- swift - 半径角和按钮