我希望这个脚本加载字符串参数,检查它的长度,如果它的长度是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
。
答案 0 :(得分:0)
您只是将表达式分配给变量而不是评估后的实际值。
您可以通过各种方式评估表达式,$(())
或bc
等。
#!/bin/bash
stringArg=$1
let myVariable=1
case "${#stringArg}" in
1) myVariable=1 ;;
*) myVariable="${#stringArg}*2-2" ;;
esac
echo $(( $myVariable ))