shell怎么函数内改变参数的值?

bandaoyu 2017-05-22 07:38:45
num1=0
num2=0


record_st_num()
{

status_check $1

if [ $? -ne 1 ] #-ne:不等于

then
(($2++))

#echo "记录 $1不是运行状态 "$2" 次"

fi
}


调用时:
record_st_num process1 num1
record_st_num process2 num2

status_check $1 这个函数检查$1 代表的进程是否在运行,如果运行返回1

所以 record_st_num 的目的就是 检查process1/2是否在运行,如果没有运行就改变 num1/2的值,我应该怎么做?
我现在 record_st_num process1 num1 这样调用,发现函数内可以改变参数num1的值,但是 函数内echo "记录 $1不是运行状态 "$2" 次" 打印$2 本意是打印参数num1改变后的值,但是结果却是直接打印出字符num1,为什么? 如何才能函数内打印num1的值?
...全文
1208 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
bandaoyu 2018-01-20
  • 打赏
  • 举报
回复
引用 8 楼 q3733353520 的回复:
引用 7 楼 bandaoyu 的回复:
[quote=引用 6楼我用双手-成就你的梦想 的回复:][quote=引用 5 楼 q3733353520 的回复:] [quote=引用 3 楼 bandaoyu 的回复:] [quote=引用 2楼linux_liyi 的回复:]echo "记录" $1 "不是运行状态" $2 "次"
不行呢,打印出来的是“ process1不是运行状态num1” 醉了
我的例子只是告诉你这样可以打印出来变量的值,至于你要用什么变量,那就要你自己具体修改程序了[/quote] 如果你想要改变$2的值,可以在函数先定义一个变量,把$2的值给它,然后再去加减那个变量,最后echo那个你加减的变量[/quote]那样我就没法改变参数的值了,我的本意就是要改变参数的值。[/quote] 所谓改变参数的值是因为你这个参数的值,你后面要用到,那么你可以定义一个全局变量(不在函数内)在函数执行时把你改变后参数的值赋值给它,然后后面要用的时候直接用这个变量不就可以了吗[/quote] 哈哈,有道理哈!
  • 打赏
  • 举报
回复
引用 7 楼 bandaoyu 的回复:
引用 6楼我用双手-成就你的梦想 的回复:
[quote=引用 5 楼 q3733353520 的回复:] [quote=引用 3 楼 bandaoyu 的回复:] [quote=引用 2楼linux_liyi 的回复:]echo "记录" $1 "不是运行状态" $2 "次"
不行呢,打印出来的是“ process1不是运行状态num1” 醉了
我的例子只是告诉你这样可以打印出来变量的值,至于你要用什么变量,那就要你自己具体修改程序了[/quote] 如果你想要改变$2的值,可以在函数先定义一个变量,把$2的值给它,然后再去加减那个变量,最后echo那个你加减的变量[/quote]那样我就没法改变参数的值了,我的本意就是要改变参数的值。[/quote] 所谓改变参数的值是因为你这个参数的值,你后面要用到,那么你可以定义一个全局变量(不在函数内)在函数执行时把你改变后参数的值赋值给它,然后后面要用的时候直接用这个变量不就可以了吗
bandaoyu 2017-05-24
  • 打赏
  • 举报
回复
引用 6楼我用双手-成就你的梦想 的回复:
引用 5 楼 q3733353520 的回复:
[quote=引用 3 楼 bandaoyu 的回复:] [quote=引用 2楼linux_liyi 的回复:]echo "记录" $1 "不是运行状态" $2 "次"
不行呢,打印出来的是“ process1不是运行状态num1” 醉了
我的例子只是告诉你这样可以打印出来变量的值,至于你要用什么变量,那就要你自己具体修改程序了[/quote] 如果你想要改变$2的值,可以在函数先定义一个变量,把$2的值给它,然后再去加减那个变量,最后echo那个你加减的变量[/quote]那样我就没法改变参数的值了,我的本意就是要改变参数的值。
  • 打赏
  • 举报
回复
引用 5 楼 q3733353520 的回复:
引用 3 楼 bandaoyu 的回复:
[quote=引用 2楼linux_liyi 的回复:]echo "记录" $1 "不是运行状态" $2 "次"
不行呢,打印出来的是“ process1不是运行状态num1” 醉了
我的例子只是告诉你这样可以打印出来变量的值,至于你要用什么变量,那就要你自己具体修改程序了[/quote] 如果你想要改变$2的值,可以在函数先定义一个变量,把$2的值给它,然后再去加减那个变量,最后echo那个你加减的变量
  • 打赏
  • 举报
回复
引用 3 楼 bandaoyu 的回复:
引用 2楼linux_liyi 的回复:
echo "记录" $1 "不是运行状态" $2 "次"
不行呢,打印出来的是“ process1不是运行状态num1” 醉了
我的例子只是告诉你这样可以打印出来变量的值,至于你要用什么变量,那就要你自己具体修改程序了
  • 打赏
  • 举报
回复
echo "记录" $1 "不是运行状态" $2 "次"
ipqtjmqj 2017-05-22
  • 打赏
  • 举报
回复
传变量要加$
bandaoyu 2017-05-22
  • 打赏
  • 举报
回复
引用 1楼ipqtjmqj 的回复:
传变量要加$
哪里加?
bandaoyu 2017-05-22
  • 打赏
  • 举报
回复
引用 2楼linux_liyi 的回复:
echo "记录" $1 "不是运行状态" $2 "次"
不行呢,打印出来的是“ process1不是运行状态num1” 醉了

19,612

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧