我在我的bash函数中使用"exit 1"语句来终止整个脚本,它工作正常:
function func()
{
echo "Goodbye"
exit 1
}
echo "Function call will abort"
func
echo "This will never be printed"
Run Code Online (Sandbox Code Playgroud)
但后来我意识到,当调用它时它不起作用:
res=$(func)
Run Code Online (Sandbox Code Playgroud)
据我所知,我创建了一个子shell,"退出1"中止了子shell而不是主要的....
但有没有办法编写一个中止整个执行的函数,无论它如何被调用?我只需要获得真正的返回值(由函数回应).
情景
我正在为一些嵌入式Linux设备开发Root FS.它位于主机上,通过NFS导出,我的开发板安装位于"/"下.我需要的工作流程是: - 将我的FS共享给其他开发人员(他们拥有自己的开发板) - 将我的Root FS备份到某个"服务器" - 将我的Root FS部署到闪存盘或其他媒体上 - 跟踪Root FS中特定文件的更改,分支和合并,回滚等.
伙计们,这在我看来是一个版本控制场景,我甚至使用git.
问题
如你所知Git(和svn/mercurial/bazaar一样!)1)不存储特殊文件(/ dev等下的设备文件)2)不存储文件所有者和权限.我希望按原样存储所有内容.
问题:
你知道一些能做这项工作的VCS吗?或者你可能知道另一个(但简单的)解决方案来做我的场景?
这是一个常见的问题......
我相信它是,因为到现在为止我已经听说过脚本/钩子/自定义软件,每个人(!)为他的目的而工作.我所需要的只是一个吃饱的VSS
谢谢 !!
我有一个Linux程序(语言无关紧要),它将程序的日志打印到stdout上。监视过程所需的日志IS。
现在,我将通过派生或使用线程对其进行并行化。
问题:生成的标准输出将包含不相关行的不可读混合...
最后是问题:您将如何为并行进程重构输出逻辑?
我怎么能在下面的bash代码中拆分long valueX字符串?
case "$1" in
value1|value2|value3|...........more values..................| valueN)
some_processing "$@"
;;
...
esac
Run Code Online (Sandbox Code Playgroud)
我正在寻找分成不同的行.Mb喜欢:
VAL+=value1
VAL+=value2
....
Run Code Online (Sandbox Code Playgroud)
提前致谢
我有一个脚本(python)应该建立两个路径 - 一个是Linux形式(本地),另一个是Windows形式(Windows共享)
如果重要的话,脚本在Linux下运行.
os.path对Windows路径没有帮助.python是否有一些帮助这个案例?
任何智能连接消除额外的分隔符将有助于......
我正在构建一个定制的 Android 系统 (JellyBean)。
我有一个项目(来自上游)包含一个 .tar 文件,它应该在构建时解压缩,它的内容应该被复制到结果目录树中的某个位置。我应该如何构建makefile来做到这一点?
我尝试了以下方法:
1) 使用 un-tar 指令编写 Android.mk(在带有 tar 的 git 中)并使用“PRODUCT_COPY_FILES += ...”
这不起作用,因为 PRODUCT_COPY_FILES 不能在 Android.mk 中使用
2) 使用 untar 说明和一些包含在 AndroidProducts.mk 中的产品定义 mk 文件编写 Android.mk,其中包含“PRODUCT_COPY_FILES += ...”
这不起作用,因为解压缩发生在“PRODUCT_COPY_FILES += (ls /untared/dir/*)”之后,因此 PRODUCT_COPY_FILES 结果为空。
3) 编写产品定义 mk 文件做 untar 然后“PRODUCT_COPY_FILES += ...”
这有效但不是很好,因为构建系统在多个位置包含此文件并且解压缩发生多次(~10)这会减慢构建速度并且不好......
正如标题所说,setLineDash应用于我NSBezierPath并没有改变描边线.完全没有效果.
我希望它让我的线破灭.请参见图片上的两条垂直红线.
码:
NSBezierPath* p= [NSBezierPath bezierPath];
CGFloat x = r.origin.x + r.size.width/2;
float dash_pattern[]={15.,15.};
NSInteger count = sizeof(dash_pattern)/sizeof(dash_pattern[0]);
[p setLineDash:(CGFloat*)dash_pattern count:count phase:0.]; // no effect ?
[p moveToPoint:NSMakePoint(x, r.origin.y+r.size.height)];
[p lineToPoint:NSMakePoint(x, [view bounds].origin.y+[view bounds].size.height)];
[[NSColor redColor]set];
[p stroke];
Run Code Online (Sandbox Code Playgroud)

我开始在我的bash脚本中使用set -e,并发现简短形式的条件表达式会破坏脚本执行.
例如,以下行应检查$ var是否为空:
[ -z "$var" ] && die "result is empty"
Run Code Online (Sandbox Code Playgroud)
但是当$ var的长度非零时,会导致脚本无声退出.
我在很多地方使用过这种形式的条件表达式......
我该怎么做才能让它正常运行?用"if"构造重写一切(这会很难看)?还是放弃"set -e"?
编辑:每个人都在要求代码.这是完整的[非]工作示例:
#!/bin/bash
set -e
function check_me()
{
ws="smth"
[ -z "$ws" ] && echo " fail" && exit 1
}
echo "checking wrong thing"
check_me
echo "check finished"
Run Code Online (Sandbox Code Playgroud)
我希望它能在函数调用之前和之后打印两个回声.但是它在check_me函数中默默地失败了.输出是:
checking wrong thing
Run Code Online (Sandbox Code Playgroud)