'*' 参数导致 "value too great for base" 错误
A '*' argument results in "value too great for base" error
我正在制作这个非常简单的算术脚本,但是当我尝试传递 *
运算符时出现了这个奇怪的错误。
语法:[命令] [num1] [num2] [算术运算符]
这是代码:
result=$(())
echo "Calculation result is: $result "
像这样传递“*”运算符:
bash my_script.sh 1 2 *
...returns 出现以下错误:
line 7: 3Access: value too great for base (error token is "3Access")
我通过测试语句将 *
替换为 \\*
来修补它。虽然我想了解为什么会出现这个错误。
我发现的唯一线程指的是有关 BASH 将八进制以上的值假定为八进制的错误。但我不清楚为什么 *
被视为一个数值。
*
在 shell 语言中有特殊含义。它由文件名扩展使用并扩展到当前目录中的所有非隐藏文件和文件夹,并将它们作为单独的参数传递给脚本。
试试这个脚本看看:
#!/bin/bash
# star.sh
echo ""
echo ""
echo ""
# and so on ...
现在运行它:
bash star.sh *
它将打印当前目录中的前 3 个文件。
为避免发生文件名扩展,您需要引用 *
。像这样:
bash your_script.sh 1 2 '*'
或者转义
bash your_script.sh 1 2 \*
我正在制作这个非常简单的算术脚本,但是当我尝试传递 *
运算符时出现了这个奇怪的错误。
语法:[命令] [num1] [num2] [算术运算符]
这是代码:
result=$(())
echo "Calculation result is: $result "
像这样传递“*”运算符:
bash my_script.sh 1 2 *
...returns 出现以下错误:
line 7: 3Access: value too great for base (error token is "3Access")
我通过测试语句将 *
替换为 \\*
来修补它。虽然我想了解为什么会出现这个错误。
我发现的唯一线程指的是有关 BASH 将八进制以上的值假定为八进制的错误。但我不清楚为什么 *
被视为一个数值。
*
在 shell 语言中有特殊含义。它由文件名扩展使用并扩展到当前目录中的所有非隐藏文件和文件夹,并将它们作为单独的参数传递给脚本。
试试这个脚本看看:
#!/bin/bash
# star.sh
echo ""
echo ""
echo ""
# and so on ...
现在运行它:
bash star.sh *
它将打印当前目录中的前 3 个文件。
为避免发生文件名扩展,您需要引用 *
。像这样:
bash your_script.sh 1 2 '*'
或者转义
bash your_script.sh 1 2 \*