我正在开始/尝试学习一些 bash 脚本,我想知道我从终端(见下文)向函数传递参数的方法有什么问题,因为我的方法似乎与互联网教程中的许多方法相似。
#!/bin/bash
function addition_example(){
result = $(($1+$2))
echo Addition of the supplied arguments = $result
}
Run Code Online (Sandbox Code Playgroud)
我调用脚本如下:
source script_name.sh "20" "20"; addition_example
Run Code Online (Sandbox Code Playgroud)
这将返回以下内容:
bash: +: syntax error: operand expected (error token is "+")
Run Code Online (Sandbox Code Playgroud)
我也试过:
addition_example "$20" "$20"
Run Code Online (Sandbox Code Playgroud)
这将返回以下内容:
bash: result: command not found
Addition of the supplied arguments =
Run Code Online (Sandbox Code Playgroud)
ter*_*don 13
您正在运行addition_example
没有参数的函数。因此,$1
和$2
变量是空的,您实际执行的只是result = $((+))
. 这正是您提到的错误:
$ result = $((+))
bash: +: syntax error: operand expected (error token is "+")
Run Code Online (Sandbox Code Playgroud)
当您运行source script_name.sh 20 20
,shell将源script_name.sh
,传递20
和20
作为参数。然而,script_name.sh
它实际上并不包含任何命令,它只有一个函数声明。所以参数被忽略。然后,在随后的命令中,您运行addition_example
但没有参数,因此您会收到上述错误。
另外,您有语法错误。=
在 shell 脚本中,赋值运算符 ( )周围不能有空格。您应该将脚本更改为:
function addition_example(){
result=$(($1+$2))
echo "Addition of the supplied arguments = $result"
}
Run Code Online (Sandbox Code Playgroud)
然后使用所需的参数运行函数:
$ source script_name.sh; addition_example 20 20
Addition of the supplied arguments = 40
Run Code Online (Sandbox Code Playgroud)
您的代码有一些小问题。
尝试这个:
#!/bin/bash
function addition_example(){
local num1=$1
local num2=$2
local result=$((num1+num2))
echo "Addition of the supplied arguments = $result"
}
addition_example "$1" "$2"
Run Code Online (Sandbox Code Playgroud)
=
使用 bash的in 变量赋值周围不能有空格echo
语句应该被引用,任何变量都应该被引用。 归档时间: |
|
查看次数: |
15417 次 |
最近记录: |