加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在shell脚本中返回多个值的成语

发布时间:2020-12-15 18:38:47 所属栏目:安全 来源:网络整理
导读:有没有成语从脚本中的bash函数返回多个值? http://tldp.org/LDP/abs/html/assortedtips.html描述了如何回显多个值并处理结果(例如,35-17),但是如果某些返回值是空格的字符串,则会变得棘手. 更结构化的返回方式将是分配给全局变量,如 foo () { FOO_RV1="bob"
有没有成语从脚本中的bash函数返回多个值?

http://tldp.org/LDP/abs/html/assortedtips.html描述了如何回显多个值并处理结果(例如,35-17),但是如果某些返回值是空格的字符串,则会变得棘手.

更结构化的返回方式将是分配给全局变量,如

foo () {
    FOO_RV1="bob"
    FOO_RV2="bill"
}

foo
echo "foo returned ${FOO_RV1} and ${FOO_RV2}"

我意识到,如果我需要在shell脚本中重新入侵,我可能会做错,但是我仍然感到非常不舒服,只是为了保持返回值,抛出全局变量.

有没有更好的办法?我喜欢可移植性,但如果我必须指定#!/ bin / bash,这可能不是一个真正的限制.

就像我喜欢shell一样,这可能是一旦你抛出任意的结构化数据,Unix bourne / posix shell就不是正确的选择.

如果有字符不在字段内出现,则与其中之一分离.典型的例子是/ etc / passwd,/ etc / group以及使用冒号作为字段分隔符的各种其他文件.

如果使用可以处理字符串内部的NUL字符的外壳,那么加入NUL并将其分隔(通过$IFS或其他)可以正常工作.但是几个常见的贝壳,包括bash,打破了NUL.测试将是我的一个旧的.sig:

foo=$'ab'; [ ${#foo} -eq 3 ] && echo "$0 rocks"

即使这样对你来说,你刚刚达到了一个警告标志,现在是时候转换成更结构化的语言(Python,Perl,Ruby,Lua,Javascript …选择你喜欢的毒药).你的代码很可能很难维护;即使可以,还有一小部分人将会很好的理解它来维持它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读