Questions tagged «bash»

有关为Bash命令外壳编写的脚本的问题。对于具有错误/语法错误的shell脚本,请在此处发布之前,使用shellcheck程序(或在Web shellcheck服务器中的https://shellcheck.net)进行检查。有关Bash交互使用的问题更可能是Super User而不是Stack Overflow上的话题。

20
从Bash数组中删除元素
我需要从bash shell中的数组中删除一个元素。通常,我只是做: array=("${(@)array:#<element to remove>}") 不幸的是,我要删除的元素是一个变量,所以我不能使用上一个命令。下面是一个例子: array+=(pluto) array+=(pippo) delete=(pluto) array( ${array[@]/$delete} ) -> but clearly doesn't work because of {} 任何想法?
116 arrays  bash  variables 

19
如何从文本文件中删除换行符?
我有以下数据,需要将它们全部放在一行中。 我有这个: 22791 ; 14336 ; 22821 ; 34653 ; 21491 ; 25522 ; 33238 ; 我需要这个: 22791;14336;22821;34653;21491;25522;33238; 编辑 这些命令都无法完美运行。 他们中的大多数让数据看起来像这样: 22791 ;14336 ;22821 ;34653 ;21491 ;25522
116 linux  bash  scripting  shell  sed 



5
使用查找排除子目录
我有这样的目录结构 data |___ | abc |____incoming def |____incoming |____processed 123 |___incoming 456 |___incoming |___processed 在数据目录内的所有文件夹中都有一个传入的子文件夹。我想从def / incoming和456 / incoming dirs以外的所有文件夹和子文件夹中获取所有文件。我尝试了以下命令 find /home/feeds/data -type d \( -name 'def/incoming' -o -name '456/incoming' -o -name arkona \) -prune -o -name '*.*' -print 但它没有按预期工作。 拉维
115 bash  unix 

14
在bash中仅从wc获得整数
有没有办法得到wc在bash中返回的整数? 基本上,我想在文件名之后将行号和字数写入屏幕。 output: filename linecount wordcount 这是我到目前为止的内容: files=`ls` for f in $files; do if [ ! -d $f ] #only print out information about files !directories then # some way of getting the wc integers into shell variables and then printing them echo "$f $lines $ words" fi done
115 bash  wc 


16
得到“警告!使用rvm 2.0.0时,“ PATH设置不正确” --default
以上第一次无效,第二次有效。 尝试将任何新的shell窗口的ruby版本设置为2.0.0。 在做 $ rvm use 2.0.0 --default 给 Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/ bin' is not at first place, usually this is caused by shell initialization files - check them for ' PATH=...' entries, it might also help to re-add RVM to your dotfiles: 'rvm get …

11
在命令行(终端)上使用R脚本的最佳方法是什么?
使用R脚本从命令行进行简单绘图非常方便。但是,从bash脚本运行R根本不方便。理想可能是这样的 #!/path/to/R ... 要么 #!/usr/bin/env R ... 但我无法完成任何一项工作。 另一种选择是将脚本纯粹保留在R中,例如script.R,然后使用R --file=script.R或类似名称调用脚本。但是,脚本有时会依赖晦涩的命令行开关,此时,部分代码存在于脚本之外。例如:通过本地.Rprofile将东西从bash偷偷潜入R中,那么所需的开关就--vanilla意味着所有东西--no-init-file。 另一个选择是bash脚本,用于存储R标志并且可以轻松执行,然后调用R脚本。问题在于这意味着单个程序仅被拆分为两个文件,这些文件现在必须保持同步,一起传输到新计算机等。 我目前最不喜欢的选项是将R嵌入到bash脚本中: #!/bin/bash ... # usage message to catch bad input without invoking R ... # any bash pre-processing of input ... # etc R --random-flags <<RSCRIPT # R code goes here RSCRIPT 一切都在一个文件中。它是可执行文件,可以轻松处理参数。问题在于,像这样将bash和R结合在一起,几乎消除了任何IDE不能彼此失败的可能性,并使我的心脏受了重伤。 有什么更好的方法我想念吗?
115 bash  r 

30
从Bash中的$ PATH变量中删除路径的最优雅方法是什么?
或更笼统地说,如何从Bash环境变量中以冒号分隔的列表中删除项目? 我以为几年前我已经看过一种简单的方法,可以使用更高级的Bash变量扩展形式,但是如果这样的话,我就会迷失方向。快速搜索Google却发现几乎没有相关结果,而我也称其为“简单”或“优雅”。例如,分别使用sed和awk的两种方法: PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;') PATH=!(awk -F: '{for(i=1;i<=NF;i++){if(!($i in a)){a[$i];printf s$i;s=":"}}}'<<<$PATH) 没有简单的东西存在吗?有什么类似于Bash中的split()函数吗? 更新: 对于我故意含糊的问题,我似乎需要道歉;我对解决特定用例的兴趣不及引起良好讨论的兴趣。幸运的是,我明白了! 这里有一些非常聪明的技术。最后,我在工具箱中添加了以下三个功能。魔术发生在path_remove中,这主要是基于Martin York对awkRS变量的巧妙使用。 path_append () { path_remove $1; export PATH="$PATH:$1"; } path_prepend () { path_remove $1; export PATH="$1:$PATH"; } path_remove () { export PATH=`echo -n $PATH | awk -v RS=: -v ORS=: …





8
如何将命令存储在Shell脚本的变量中?
我想将要在以后使用的命令存储在变量中(不是命令的输出,而是命令本身) 我有一个简单的脚本,如下所示: command="ls"; echo "Command: $command"; #Output is: Command: ls b=`$command`; echo $b; #Output is: public_html REV test... (command worked successfully) 但是,当我尝试更复杂的操作时,它会失败。例如,如果我做 command="ls | grep -c '^'"; 输出为: Command: ls | grep -c '^' ls: cannot access |: No such file or directory ls: cannot access grep: No such file …
113 linux  bash  variables  command 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.