我正在尝试创建一个返回 0 或 1(即 true 或 false)并接受一个参数的函数,然后在另一个中创建一个变量来存储该函数的结果。最后检查该变量是 0 还是 1(真或假)
这是我正在尝试的示例
#!/bin/bash
_has_string() {
if [ $1 == "string" ];
return 0
else
return 1
fi
}
_my_func() {
var=$(_has_string "string")
if [ $var == "0" ]; then
echo "var contains string"
else
echo "var does not contain string"
fi
}
_my_func
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些变体,但似乎找不到让它工作的方法。我所有的变体基本上都只是返回$var
为空。不是 0。不为空。从字面上看,它只是空白。
Hau*_*ing 13
您将输出与退出代码混淆。
_my_func() {
if _has_string 'string'; then
Run Code Online (Sandbox Code Playgroud)
您还应该引用您的变量;并且_has_string
可以简化:
_has_string() {
[ "$1" = 'string' ]
}
Run Code Online (Sandbox Code Playgroud)
小智 6
$(...)
返回命令的输出:发送到标准输出的东西。您需要退出代码。在 bash 脚本中退出进程(或在您的情况下为函数)后,特殊变量$?
将设置为退出代码。
所以而不是
var=$(_has_string 'string')
...
Run Code Online (Sandbox Code Playgroud)
考虑
_has_string 'string'
var=$?
...
Run Code Online (Sandbox Code Playgroud)