b***i 发帖数: 3043 | 1 今天有个程序,是这样的
一个文件define.sh
test_func() {
echo " in test func: $1 $2"
}
主文件test.sh
for .... do
echo "in loop"
ret="$(test_func $1 $2)"
done
./test.sh不好用。显示完in loop就停在那里。
改成
for .... do
echo "in loop"
test_func $1 $2
done
好用。但是我需要返回的结果啊。咋办呢? |
f*******t 发帖数: 7549 | |
b***i 发帖数: 3043 | 3 我这里出了很多问题,有些代码没有写,这里补上
首先,我的问题出在grep --color什么的,导致死机, 所以我加入了调试信息,这样
写的
echo "********$1 $2 $3"
结果脚本的名字显示出来了
test.sh a b c
但是,最奇怪的是,竟然显示另一个脚本的名字
1000.sh a b c
这让我觉得非常奇怪。当然,Mac的bash版本很低,是吧。
【在 f*******t 的大作中提到】 : $()别加引号
|
f*******t 发帖数: 7549 | 4 不好意思我实在看不懂你想说什么……
【在 b***i 的大作中提到】 : 我这里出了很多问题,有些代码没有写,这里补上 : 首先,我的问题出在grep --color什么的,导致死机, 所以我加入了调试信息,这样 : 写的 : echo "********$1 $2 $3" : 结果脚本的名字显示出来了 : test.sh a b c : 但是,最奇怪的是,竟然显示另一个脚本的名字 : 1000.sh a b c : 这让我觉得非常奇怪。当然,Mac的bash版本很低,是吧。
|
m*****n 发帖数: 3575 | 5 ret=`test_func $1 $2`
用左上角那个小顿点 |
d***a 发帖数: 13752 | 6 这是正解。用双`号得到返回值。
【在 m*****n 的大作中提到】 : ret=`test_func $1 $2` : 用左上角那个小顿点
|
m*****n 发帖数: 3575 | 7 对,$([command string])是不知哪个版本起的新语法。
我就一直用`[command string]`
【在 d***a 的大作中提到】 : 这是正解。用双`号得到返回值。
|