Questions tagged «bash»

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


2
获取shell命令输出的第一行
尝试读取的版本号时vim,我得到了很多其他行,需要忽略。我尝试阅读的手册,head并尝试了以下命令: vim --version | head -n 1 我想知道这是否正确吗?
96 linux  bash  shell 

9
env:bash \ r:没有这样的文件或目录
我正在尝试从此处安装YouCompleteMe 。 当我执行时: ./install.sh --clang-completer 我收到此错误: env: bash\r: No such file or directory 我不知道环境变量有什么问题。这是我的bash路径: which bash /bin/bash 我需要将其更改为/usr/bash吗?如果是,那我该怎么办?我尝试更改~/.bashrc文件,但是没有用。

8
如何将“ find”命令结果存储为Bash中的数组
我试图将结果保存find为数组。这是我的代码: #!/bin/bash echo "input : " read input echo "searching file with this pattern '${input}' under present directory" array=`find . -name ${input}` len=${#array[*]} echo "found : ${len}" i=0 while [ $i -lt $len ] do echo ${array[$i]} let i++ done 我在当前目录下得到2个.txt文件。所以我期望'2'作为的结果${len}。但是,它打印1。原因是将所有结果都find作为一个元素。我怎样才能解决这个问题? PS 我发现了几个解决方案,在计算器上有关类似问题。但是,它们有些不同,因此我无法申请。我需要在循环之前将结果存储在变量中。再次感谢。
96 arrays  bash  variables  find 

2
在Bash或Shell脚本中转​​发函数声明?
例如bash,在C / C ++中是否存在这样的东西,或者至少有类似(替代方法)的东西,例如正向声明? 还是有这样的事情,例如因为它总是一次执行(一行接一行)? 如果没有前向声明,我应该怎么做才能使脚本更易于阅读。时间太长,这些函数定义在开始时就与全局变量混合在一起,使我的脚本看起来难看并且难以阅读/理解。我要求学习一些针对此类情况的知名/最佳做法。 例如: # something like forward declaration function func # execution of the function func # definition of func function func { echo 123 }

10
验证Bash脚本的参数
我想出了一个基本的文件夹,可以帮助您自动删除一些不需要的文件夹。 #!/bin/bash rm -rf ~/myfolder1/$1/anotherfolder rm -rf ~/myfolder2/$1/yetanotherfolder rm -rf ~/myfolder3/$1/thisisafolder 像这样引起: ./myscript.sh <{id-number}> 问题是,如果您忘记键入id-number (就像我当时所做的那样),那么它可能会删除很多您确实不想删除的内容。 有没有一种方法可以向命令行参数添加任何形式的验证?以我为例,最好检查一下:a)是否有一个参数,b)是数字,c)文件夹是否存在;在继续执行脚本之前。
95 validation  bash  shell 

5
获取bash列中唯一值的计数
我有几列的制表符分隔文件。我想计算一个文件夹中所有文件在一列中出现不同值的频率,并按照计数从高到低的顺序进行排序(从最高计数开始)。我将如何在Linux命令行环境中完成此任务? 它可以使用任何常见的命令行语言,例如awk,perl,python等。

4
bash中的HMAC-SHA1
是否有一个bash脚本来生成一个 HMAC-SHA1哈希? 我正在寻找与以下PHP代码等效的内容: hash_hmac("sha1", "value", "key");
95 bash  sha1  hmac 

6
如何在Mac OS 10.10+上使用GNU sed,不再支持'brew install --default-names'
在Mac OS 10.10.3下,我通过键入以下命令安装了gnu-sed: brew install gnu-sed --default-names 再次键入时,收到消息: 已安装gnu-sed-4.2.2 但是,即使在重新启动系统并重新启动终端之后,我仍然无法使用GNU版本的sed。例如: echo a | sed ’s_A_X_i’ 返回:替换命令'i'中的错误标志 我应该怎么做才能使GNU版本正常工作?这是$ PATH变量中的路径。 /Users/WN/-myUnix /opt/local/bin /opt/local/sbin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /Applications/calibre.app/Contents/MacOS /opt/ImageMagick/bin /usr/texbin 很抱歉,我的问题似乎很明显,但是我自己学习shell脚本,还不太了解如何安装UNIX程序。在Mac上使用GNU兼容命令(在这种情况下是sed,但不久以后我还将需要其他命令)的任何帮助而不会造成损坏或不必要的混乱的任何帮助将不胜感激。
95 macos  bash  sed  homebrew  gnu 

8
如何在函数内访问调用方的命令行参数?
我试图用bash编写一个函数,该函数将访问脚本的命令行参数,但是将其替换为该函数的位置参数。如果未显式传递命令行参数,该函数是否可以访问命令行参数? # Demo function function stuff { echo $0 $* } # Echo's the name of the script, but no command line arguments stuff # Echo's everything I want, but trying to avoid stuff $*

17
将多行字符串转换为单逗号分隔
假设我有以下字符串: something1: +12.0 (some unnecessary trailing data (this must go)) something2: +15.5 (some more unnecessary trailing data) something4: +9.0 (some other unnecessary data) something1: +13.5 (blah blah blah) 我如何将其变成简单 +12.0,+15.5,+9.0,+13.5 b?
95 string  bash  shell  csv 

2
Bash脚本错误[:!=:预期为一元运算符
在我的脚本中,我尝试对第一个也是唯一的参数是否等于-v进行错误检查,但这是可选参数。我使用if语句,但始终收到一元运算符预期的错误。 这是代码: if [ $1 != -v ]; then echo "usage: $0 [-v]" exit fi 编辑: 我应该更具体一些:上面脚本的这一部分正在检查可选参数,然后,如果未输入该参数,则它将运行程序的其余部分。 #!/bin/bash if [ "$#" -gt "1" ]; then echo "usage: $0 [-v]" exit fi if [ "$1" != -v ]; then echo "usage: $0 [-v]" exit fi if [ "$1" = -v ]; …
95 bash 


9
如何使用前缀/后缀重命名?
我该怎么办 mv original.filename new.original.filename不重新输入原始文件名? 我可以想象能够做类似的事情,mv -p=new. original.filename或者做类似的mv original.filename new.~事情,但是在查看man mv/ info mv页面后我看不到任何类似的东西。 当然,我可以编写一个shell脚本来执行此操作,但是没有现成的命令/标志吗?
95 bash  rename  filenames  prefix  mv 

5
如何使用sed从字符串中提取文本?
我的示例字符串如下: This is 02G05 a test string 20-Jul-2012 现在我要从上面的字符串中提取02G05。为此,我用sed尝试了以下正则表达式 $ echo "This is 02G05 a test string 20-Jul-2012" | sed -n '/\d+G\d+/p' 但是上面的命令什么都不打印,我相信这是因为它无法与我提供给sed的模式相匹配。 所以,我的问题是我在这里做错了什么以及如何纠正它。 当我使用python尝试上述字符串和模式时,得到了我的结果 >>> re.findall(r'\d+G\d+',st) ['02G05'] >>>
95 regex  bash  sed 

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.