Questions tagged «bash»

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


9
如果有任何命令返回非零值,则中止shell脚本吗?
我有一个Bash shell脚本,可以调用许多命令。如果任何命令返回的非零值,我都希望shell脚本自动返回1的返回值。 如果不显式检查每个命令的结果,是否有可能? 例如 dosomething1 if [[ $? -ne 0 ]]; then exit 1 fi dosomething2 if [[ $? -ne 0 ]]; then exit 1 fi
437 linux  bash  unix  shell 

10
递归查找具有特定扩展名的文件
我正在尝试使用bash(最新的Ubuntu LTS版本)在目录及其子目录中找到具有特定扩展名的所有文件。 这是在脚本文件中写的: #!/bin/bash directory="/home/flip/Desktop" suffix="in" browsefolders () for i in "$1"/*; do echo "dir :$directory" echo "filename: $i" # echo ${i#*.} extension=`echo "$i" | cut -d'.' -f2` echo "Erweiterung $extension" if [ -f "$i" ]; then if [ $extension == $suffix ]; then echo "$i ends with $in" else …
436 linux  bash  recursion 

23
Git Bash在Windows 7 x64上非常慢
在一个小项目的开发过程中,我一直在Windows和Ubuntu上使用Git,经常在两者之间来回切换。问题在于,Git Bash持续变慢。 当我说慢的时候,我的意思是运行cd需要8-25秒,运行git命令需要5-20秒,ls有时可能需要30秒。不用说,这不好玩,更不用说徒劳了。我知道Git在Windows上速度较慢,但​​这很荒谬。 对我而言,暂时有效的一种解决方案是禁用我的网络连接(如本答案所述),启动Git Bash,然后重新连接。有时,它会在几天后继续快速运行,但是性能最终最终会下降。我已经连续数周浏览了msysgit讨论组,Stack Overflow,msysgit问题列表等,但是我无法提供有效的解决方案。 到目前为止,我已经尝试过: 将Git和项目文件夹添加到病毒扫描程序的排除列表中 完全禁用我的病毒扫描程序(Kaspersky IS 2011) 确保Outlook未运行(Outlook 2007) 关闭所有其他应用程序 以管理员身份运行Git Bash 禁用网络连接,启动Git Bash,并保持连接禁用 禁用网络连接,启动Git Bash,重新启用连接(仅偶尔起作用) 跑步 git gc 以及以上的组合 我确实读过一些人在禁用Bash完成方面取得了成功,但理想情况下,我希望保持这种状态。msysgit的版本为1.7.3.1-preview20101002,操作系统为Windows 7 x64。可以预见,在Linux上运行相同的操作很快。我将只使用Linux,但是我也需要在Windows中运行某些东西(某些应用程序,测试等)。 有没有人遇到过类似的问题?如果是这样,潜在的问题是什么?解决方案是什么(如果有)? 这不仅限于Git信息库,而且仅供参考,我一直在使用Git的信息库很小:最大约4至50个文件。
435 git  bash  windows-7  msysgit  mingw32 

11
使用多个命令查找-exec
我试图将find -exec与多个命令一起使用而没有成功。有人知道以下命令是否可行吗? find *.txt -exec echo "$(tail -1 '{}'),$(ls '{}')" \; 基本上,我正在尝试在当前目录中打印每个txt文件的最后一行,并在该行的末尾打印,逗号后跟文件名。
429 bash  find 



13
如何将bash中的整数序列零填充以使它们的宽度相同?
我需要循环一些值, for i in $(seq $first $last) do does something here done 对于$first和$last,我需要将其固定长度为5。因此,如果输入为1,则需要在前面加上零,使其变为00001。99999例如,它一直循环播放,但是长度必须为5。 如:00002,00042,00212,012312等等。 关于我该怎么做的任何想法?
426 bash  numbers  padding 

10
如何从Shell脚本获取密码而不回显
我有一个脚本,该脚本可以自动执行需要访问受密码保护的系统的过程。可通过接受用户密码作为参数的命令行程序访问该系统。 我想提示用户输入密码,将其分配给shell变量,然后使用该变量构造访问程序的命令行(当然,它将生成我将处理的流输出)。 我是Bourne / Bash的一名称职的Shell程序员,但是我不知道如何在不回显到终端的情况下接受用户输入(或者使用“ *”字符回显该输入)。 有人能帮忙吗?
424 bash  shell  scripting  sh 

15
Bash中的管道输出和捕获退出状态
我想执行Bash中长时间运行的命令,都捕获它的退出状态,并且发球它的输出。 所以我这样做: command | tee out.txt ST=$? 问题在于变量ST捕获了tee命令而不是命令的退出状态。我该如何解决? 请注意,该命令运行时间很长,将输出重定向到文件以供以后查看对我来说不是一个好的解决方案。


30
如何将进度条添加到Shell脚本?
在bash或* NIX中的任何其他Shell中编写脚本时,在运行将花费几秒钟的命令的同时,需要一个进度条。 例如,复制一个大文件,打开一个大tar文件。 您建议采用什么方式将进度条添加到Shell脚本?
413 bash  shell  zsh 

30
使用getopts处理长和短命令行选项
我希望使用我的shell脚本来调用命令行选项的长短形式。 我知道getopts可以使用,但是像在Perl中一样,我无法对shell进行同样的操作。 关于如何完成此操作的任何想法,这样我就可以使用以下选项: ./shell.sh --copyfile abc.pl /tmp/ ./shell.sh -c abc.pl /tmp/ 在上面,这两个命令对我的shell来说意义相同,但是使用 getopts,我无法实现这些功能吗?

9
多行字符串,带有多余的空格(保留缩进)
我想使用以下内容将一些预定义的文本写入文件: text="this is line one\n this is line two\n this is line three" echo -e $text > filename 我期待这样的事情: this is line one this is line two this is line three 但是得到这个: this is line one this is line two this is line three 我很肯定每个空格之后都没有空格\n,但是多余的空格怎么来?
409 string  bash  shell  echo 

10
在外壳中获取程序执行时间
我想在几种不同条件下在linux shell中执行某些操作,并能够输出每次执行的执行时间。 我知道我可以编写一个可以执行此操作的perl或python脚本,但是有没有办法在shell中执行此操作?(碰巧是bash)
407 linux  bash  shell 

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.