首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >独立shell脚本与shell函数?

独立shell脚本与shell函数?
EN

Stack Overflow用户
提问于 2012-09-01 00:08:55
回答 2查看 2.8K关注 0票数 6

例如,我想编写一个bash shell脚本来使用rsync执行循环备份。我应该把它作为一个独立的脚本文件(backup.sh)还是包装在一个函数(backup)中?作为脚本文件,我可以只用bash backup.sh来运行它。作为一个函数,我可以将其放入foo.sh等文件中,并在每次登录时将其作为源文件,然后我可以简单地将backup作为命令运行来备份我的文件。问题是,这两种策略的优缺点是什么?

或者更一般地说,我在想,在什么情况下,我应该将功能实现为独立的Shell脚本文件或shell函数?

我的一些想法:我知道一些图形会话(如KDE、Gnome等)。登录时获取不同的文件。如果想要在图形化启动的应用程序中使用shell函数(例如单击图标打开emacs),可能会造成一些混乱。但我更喜欢将它们实现为shell函数,并将它们放在一起放入文件中,我认为这样做很整洁且组织良好。

还有其他的想法或建议吗?

EN

Stack Overflow用户

发布于 2012-09-01 00:25:06

一个类似python的解决方案:

代码语言:javascript
运行
复制
#!/bin/bash

caller_shlvl=$1
shift

backup () {
    ...
}

if (( $caller_shlvl < $SHLVL )); then
    backup "$@"
fi

您可以执行以下两项操作之一:

代码语言:javascript
运行
复制
bash script.sh $SHLVL other args

在调用脚本时运行备份,或者

代码语言:javascript
运行
复制
source script.sh $SHLVL
# Time passes
backup firstarg secondarg etc

它将在当前shell中定义函数,但不会执行它。

(必须将$SHLVL作为显式的第一个参数传递,这是我能做到的最接近于模拟Python的

代码语言:javascript
运行
复制
if __name__=="__main__":

它并不美观,并且可能使这个答案不是那么有用。)

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12219001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档