如何编写一个bash脚本/函数,它将带有空格的命令行参数,并将其解释为它周围有引号。
即:echo this is some text
,好像echo "this is some text"
我想要做的是创建一个简单的CLI计算器脚本/函数。 这就是我所拥有的:
calc() {
echo $(($@))
}
在CLI上,所有这些工作:
"#+ - / *",#+ - / *,#+ - /#
即:
calc 10+2
12
但是这个会产生错误:
calc 10 * 2
-bash: 10 calc.sh 2: syntax error: invalid arithmetic operator (error token is ".sh 2")
有什么想法吗?在计算中包含引号并不是什么大不了的事,但如果可能的话,不包括它们会更快/更方便。有没有办法在从第一个字符到最后一个字符的计算结果之后取一个字符串,然后在脚本中将它传递给引号?
答案 0 :(得分:-1)
在unix系统中有一个名为IFS的变量。此变量决定控制台将字符串分隔为单词的符号。理论上你可以改变IFS变量,但这实际上是不可取的(因为它会破坏其他bash命令)。
更好:你可以用这样的方式写下你的用法,写作' calc'将提示用户输入他的等式到标准。然后你可以阅读用户输入的文本并以你想要的任何方式解析它。
更好的是:shell脚本可以指定它希望任意数字的单词作为输入。记下用户写的所有单词,然后解析它。请参阅:How to define a shell script with variable number of arguments?