我想在同一行回显两个变量。我想将2015-03-04.01.Abhi_Ram.txt存储在变量FILENAME中,将10存储在变量COUNT中并同时回显它们。示例.txt2015-03-04.01.Abhi_Ram.txt102015-03-04.02.Abhi_Ram.txt70下面是我想出的代码:forlinein`hadoopfs-catsample.txt`doVAR="${line}"FILENAME=`echo${VAR}|awk'{print$1}'`COUNT=`echo${VAR}|awk'{print$2}'`COUNT_DT=`date"+%Y-%m-%d%H:%
我想查看系统是否安装了nodejs。我收到此错误:Error:commandnotfound.我该如何解决?#!/bin/bashif[nodejs-v];thenecho"nodejsfound"elseecho"nodejsnotfound"fi 最佳答案 您可以使用commandbashbuiltin:ifcommand-vnodejs>/dev/null2>&1;thenecho"nodejsfound"echo"version:$(nodejs-v)"elseecho"nodejsnotfound"fi
我有一个字符串echo$STRING给出firstsecondthirdfourthfifth基本上是一个用空格分隔的列表。我如何获取该字符串并使其成为一个数组,以便array[0]=firstarray[1]=second等..我试过了IFS=''read-alist但是当我做一个echo${list[@]}它只打印出“first”,没有别的 最佳答案 其实很简单:list=($STRING)或者更详细一点:declare-alist=($STRING)PS:您不能在同一命令中导出IFS并使用新值。您必须先声明它,然后在以下命令中
我正在编写一个用于各种Linux平台的shell脚本。脚本的一部分安装了几个包。我如何确定linux供应商和默认系统安装机制,例如Debian/Ubuntu有apt-get/apt,Fedora有yum等等...提前致谢 最佳答案 您真的不需要检查供应商,因为他们可能决定更改包装系统(不太可能,但从概念上讲,您必须确保对于您测试的每个发行版,您尝试正确的包管理器命令)。您所要做的就是测试安装本身:YUM_CMD=$(whichyum)APT_GET_CMD=$(whichapt-get)OTHER_CMD=$(which)然后可能按
假设我在命令行中输入并执行了一个很长的BASH命令。现在我想把它分开。所以根据历史,我又得到了我的长命令,但现在我不能给Enter来插入换行符。你是怎么做到的? 最佳答案 您可以使用两个快捷键ctrl+k和ctrl+y:echo"somecommand"&&echo"someotherlongcommand"现在将光标移动到某处(在我的示例中,光标标记为>):echo"somecommand"&&>echo"someothercommand"现在按ctrl+k-这将剪切光标后的所有内容:echo"somecommand"&&>现在输
我知道source和.做同样的事情,如果标题中的其他命令对不一样,我会感到惊讶事情(因为我正在运行bash作为我的shell,$SHELL[script]和bash[script]是等价的,对吧??)。那么这三种执行脚本的方法有什么区别呢?我问是因为我刚刚了解到采购脚本是NOTtheexactsame作为执行它。在运行我的“实验”和阅读手册页时我没有发现明显的方式。通过在我编写的非常简单的脚本上盲目调用这些函数,我无法发现其他哪些细微差别?阅读上面链接的答案后,我可以强烈猜测我的问题的答案将是一个非常简单的解释,但以一种我自己几乎从未完全发现的方式。这是我做的“实验”:$.myScri
比方说一个脚本是这样开始的#!/bin/bash#$-S/bin/bash#$-lhostname=qn*然后在页面下方实际脚本开始发挥作用。我的问题是“#$”符号的含义或作用是什么? 最佳答案 您是否以任何方式在批处理集群上运行?像SunGridEngine?旨在作为批处理作业运行的脚本中可能有特殊含义。https://www.wiki.ed.ac.uk/display/EaStCHEMresearchwik/How+to+write+a+SGE+job+submission+script更新:当从stackoverflow.co
我有以下代码可以将多个文件连接在一起。它工作正常,但我想将空值替换为0,所以我使用了-e“0”。但它不起作用。有什么想法吗?forkin`lsfile?`doif[-afinal.results]thenjoin-a1-a2-e"0"final.results$k>tmp.resmvtmp.resfinal.resultselsecp$kfinal.resultsfidone例子:file1:a1b2file2:a1c2file3:b1d2Results:a1010b210c2d2expected:a110b201c020d002 最佳答案
我正在编写一个小脚本来处理文件夹。运行时间很长,所以我想添加一个进度条。这是迭代:forfilein*/do#processinghere,dummycodesleep1done拥有一个计数器并知道文件夹的数量将是一个解决方案。但我正在寻找更通用和更短的解决方案......我希望有人能有想法。感谢您的关注,朱利安编辑:我得到了这个解决方案,它可以做我想做的,而且是真正图形化的:#!/bin/bashn_item=$(find/*-maxdepth0|wc-l)i=0forfilein/*dosleep1#processfilei=$((i+1))echo$((100*i/n_item)
我有一个计算double结果的C++程序(在Linux上),我想编写一个bash脚本来运行该程序可变次数并为我计算这些结果的平均值。为简单起见,请考虑以下代码:主要.cpp:intmain(){cout脚本.sh:sum=0num=$1for((i=0;i有没有一种简单的方法可以将程序的结果传回bash脚本?我阅读了有关使用退出代码的信息,但返回类型是double的,所以我认为这行不通。从字符串输出中解析值并不实用,因为该程序还有其他终端输出。 最佳答案 执行此操作的UNIX方法是将非必要数据写入stderr,并将实际结果写入std