Articles of shell

linux shell标题大小写

我正在弄一个shell脚本,并有一个像这样的variables: something-that-is-hyphenated 。 我需要在脚本的各个方面使用它: something-that-is-hyphenated , somethingthatishyphenated something-that-is-hyphenated , somethingthatishyphenated something-that-is-hyphenated 我已经设法将其更改为通过剥离-使用sed "s/-//g"来sed "s/-//g" 。 我相信有一个更简单的方法,而且,也需要知道如何获得骆驼套装版本。 编辑:从@Michał的答案派生的工作function function hyphenToCamel { tr '-' '\n' | awk '{printf "%s%s", toupper(substr($0,1,1)), substr($0,2)}' } CAMEL=$(echo something-that-is-hyphenated | hyphenToCamel) echo $CAMEL 编辑:最后,感谢@glenn sed一个class轮 echo a-hyphenated-string | sed -E "s/(^|-)([az])/\u\2/g"

bash:从频率表中获取百分比

我已经做了一个小的bash脚本,以获得在一个文件的某一列的项目的频率。 输出会是这样的 A 30 B 25 C 20 D 15 E 10 我在脚本中使用的命令是这样的 cut -f $1 $2| sort | uniq -c | sort -r -k1,1 -n | awk '{printf "%-20s %-15d\n", $2,$1}' 我怎样才能修改它以显示每种情况下的相对百分比。 所以它会是这样的 A 30 30% B 25 25% C 20 20% D 15 15% E 10 10%

为什么shell在后台进程中忽略SIGINT和SIGQUIT?

如果我在脚本或-c片段中背景进程,后台进程将忽略SIGINT和SIGQUIT: 例: $ alias ps='ps -o pid,ppid,pgrp,sid,stat,tty,ignored,blocked,caught,wchan,min_flt,pmem,args –forest' $ sh -c 'sleep 1000 & sleep 1000 | sleep 1000' & \ sleep 0.01; ps |grep -v -e ps -e grep PID PPID PGRP SID STAT TT IGNORED BLOCKED CAUGHT WCHAN MINFL %MEM COMMAND 6197 2143 6197 6197 Ss pts/28 0000000000380004 0000000000010000 000000004b817efb wait 10039 0.0 […]

bash:迭代通过索引select的JSON数组的成员

我使用jq来parsingJSON文件,将每个JSON数组抽取到一个shell数组中。 我目前的代码如下所示: for ((i = 0; i < ${#nvars[@]}; i++)); do v1=($(cat $INPUT | jq '."config"[i]."var1"[]')) echo $v1 done 错误信息: error: i is not defined 我也换了 v1=($(cat $INPUT | jq '."config"[i]."var1"[]')) 同 v1=($(cat $INPUT | jq '."config"[$i]."var1"[]')) 还是行不通。 任何想法? 任何帮助表示赞赏! 编辑:示例input数据 { "config-vars":[ { "var1":["v1","v2"], "var2":"" }, { "var1":["v3",""], "var2":"v4" } ] }

Linux shell的音译脚本

我有多个.txt文件包含字母表中的文本; 我想把文字音译成另外一个字母; 字母1的一些字符与字母2的字符是1:1(即a变成e ),而另一些字符是1:2(即x变成ch )。 我想用Linux shell的一个简单的脚本做这个。 与TR或SED我可以转换1:1字符: sed -fy/abcdefghijklmnopqrstuvwxyz/nopqrstuvwxyzabcdefghijklm/ a会变成n , b会变成o等等(我认为是凯撒的密码) 但是我怎样才能处理1:2的字符?

使用tee命令将输出redirect到不存在的目录中的文件

我正在尝试使用tee命令将输出redirect到一个文件,并且我想要在尚未创build的目录中创build该文件。 date | tee new_dir/new_file 当new_dir不在那里时,tee命令失败 tee:new_dir / new_file:没有这样的文件或目录 如果在运行tee命令之前创buildnew_dir,那么它可以正常工作,但由于某种原因,我不想手动创buildnew_dir,是否可以使用tee命令创buildnew_dir?

包含命令输出的variables的Shell脚本打印内容删除换行符

我正在编写一个shell脚本,它将命令的输出存储在variables中,处理输出,并稍后回显结果。 这是我得到的: stuff=$(diff -u pens tape) # process the output echo $stuff 问题是,从运行脚本得到的输出是这样的: — pens 2009-09-27 10:29:06.000000000 -0400 +++ tape 2009-09-18 16:45:08.000000000 -0400 @@ -1,4 +1,2 @@ -highlighter -marker -pencil -POSIX +masking +duct 而我期待这样的: — pens 2009-09-27 10:29:06.000000000 -0400 +++ tape 2009-09-18 16:45:08.000000000 -0400 @@ -1,4 +1,2 @@ -highlighter -marker -pencil -POSIX +masking +duct 它看起来像换行符被删除。 […]

从github下载tarball而不curl

我有一个embedded式系统,我不能安装任何东西,唯一的工具,我可能用来获取的东西是wget。 事实certificate,你不能用wget做同样的事情,你可以用curl来做。 我也不能交叉编译这个系统,所以我需要求助于Python或shell脚本。 有一个名为Dulwich的git的纯Python实现实际上有一些我需要交叉编译的C代码…所以我甚至用这个方法来看看这个,FYI。 我需要的是从github仓库获取代码,显而易见的解决scheme是使用他们提供的tarball。 我通常复制链接从存储库页面下载zipbutton,并使用授权令牌,而不是用户名和密码。 它的工作原理很简单,就像这样: curl -L https://<token>@github.com/<org|user>/<repo>/archive/master.tar.gz | tar xz 事实certificate,wget是更尴尬,无论我尝试只是工作。

./a.out的redirect不捕获分段错误

我运行命令 ./a.out <in&> output.txt 我也想把错误放在output.txt 。 命令的exit状态是139,在terminal输出的是: 分割故障(核心转储) 和output.txt文件是空的。

为什么unix读取时不读最后一行?

我的脚本 export IFS=":" cat hello | while read abcd; do echo $a,$b,$c,$d done 我的文件hello 1:1:1:1 2:2:2:2 3:3:3:3 我的输出 1,1,1,1 2,2,2,2 如果我在3:3:3:3之后input一个空行,那么输出就变成了 1,1,1,1 2,2,2,2 3,3,3,3 任何人都知道我可以如何解决这个问题,所以我不需要在你最后一个空行?