Questions tagged «bash»

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

9
在bash中,如何计算变量中的行数?
我有一个变量,其中存储了一个字符串,需要检查它是否包含行: var=`ls "$sdir" | grep "$input"` 伪代码: while [ ! $var's number of lines -eq 1 ] do something 那是我关于如何检查的想法。echo $var | wc -l不起作用-1即使可以,它总是说3。 echo -e 效果不佳。
79 bash  string 

10
停止并删除docker容器(如果正在运行)
我正在寻求实用地停止和删除docker容器(如果正在运行)。这是用于构建脚本的。 请看下面的例子。我如何停止和删除docker容器“ rabbitmq”,如bash脚本中的NAMES列所示? docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9909a5e2856f rabbitmq-image "/docker-entrypoint.s" 11 minutes ago Up 11 minutes 0.0.0.0:5672->5672/tcp, rabbitmq 8990dd1fe503 redis-image "/entrypoint.sh redis" 6 weeks ago Up 4 days 0.0.0.0:32770->6379/tcp redis etc 以下命令将删除容器并执行我要执行的操作 docker stop rabbitmq && docker rm -f rabbitmq 但是,它正在将其组合成我想知道的脚本?我认为它看起来像这样。 #!/bin/bash if [ …


2
不使用缓存的卷曲命令
有没有办法告诉curl命令不要使用服务器端缓存?例如; 我有这个curl命令: curl -v www.example.com 如何要求curl发送新请求以不使用缓存? 注意:我正在终端中寻找可执行命令。

10
使用bash历史记录获取上一个命令,将其复制然后“运行”,但命令已注释
只是一个提高我的bash技能的问题。我总是这样做: $ history | grep some_long_command ... ... 123 some_long_command1......... 124 some_long_command2......... ... 然后,我可以通过执行以下命令运行命令: !123 但是,我经常想这样做: some_long_command1foobar 即在运行它之前更改命令。您可以使用bash代替运行此命令吗: #some_long_command1 因此得到评论。 然后,我不必使用鼠标突出显示命令,对其进行编辑然后运行(我可以使用键盘-更快)。 我想我可以写一个脚本来做,但是可能已经在某处内置了功能……。

6
bash回显bash变量中给出的文件行数,不带文件名
我在bash脚本中具有以下三个构造: NUMOFLINES=$(wc -l $JAVA_TAGS_FILE) echo $NUMOFLINES" lines" echo $(wc -l $JAVA_TAGS_FILE)" lines" echo "$(wc -l $JAVA_TAGS_FILE) lines" 运行脚本时,它们都产生相同的输出: 121711 /home/slash/.java_base.tag lines 121711 /home/slash/.java_base.tag lines 121711 /home/slash/.java_base.tag lines 即文件名也被回显(我不想)。为什么这些Scriplet失败,我应该如何输出干净的消息: 121711 lines ?
79 bash  wc 


3
如何在案例陈述中使用模式?
该man页面说case语句使用“文件名扩展模式匹配”。 我通常希望对某些参数使用简称,所以我去了: case $1 in req|reqs|requirements) TASK="Functional Requirements";; met|meet|meetings) TASK="Meetings with the client";; esac logTimeSpentIn "$TASK" 我尝试了类似的模式,req*或者me{e,}t我知道可以在文件名扩展的上下文中正确扩展以匹配这些值的模式,但是它不起作用。


1
iTerm中的Bash键盘快捷键,例如Alt + d和Alt + f [关闭]
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 7年前关闭。 改善这个问题 每个人都向我推荐iTerm2,而不是本机终端。但是iTerm2似乎不允许我使用bash快捷方式(如Alt+B 和Alt+)F在标记之间来回跳转,或Alt+D删除单词。 我无法想象这不可用。谁能帮我吗?

2
Bash:接受第一个命令行参数,然后传递其余参数
例: check_prog hostname.com /bin/check_awesome -c 10 -w 13 check_remote -H $HOSTNAME -C "$ARGS" #To be expanded as check_remote -H hostname.com -C "/bin/check_awesome -c 10 -w 13" 我希望以上所述是有道理的,因为我将在大约20多个命令中使用该参数,所以参数会发生变化。它是包装程序的一种奇怪方法,但是可以解决我们在此处使用的一些系统的一些问题(70年代的爱代码) 上面的代码可以用perl或python编写,但是Bash是首选方法
78 bash 

6
在同一终端中一次并行运行多个命令
我想运行一些命令,直到按Ctrl-C才会退出。我是否可以运行一次即可运行所有这些程序,而Ctrl-C会全部退出它们?他们可以共享终端输出。 具体来说,我有指南针编译器,coffeescript编译器和一个监视文件更改的自定义命令,所有命令都在运行中监视文件更改。我不想为每个命令加载一个终端。
78 linux  bash 

14
我怎么知道我的docker mysql容器何时启动并且mysql准备好进行查询?
我正在部署几个不同的Docker容器,第一个是mysql。我想在数据库启动后立即运行脚本,然后继续构建其他容器。该脚本已失败,因为它试图在设置mysql(从此正式mysql容器)的入口点脚本仍在运行时运行。 sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=MY_ROOT_PASS -p 3306:3306 -d mysql [..] wait for mysql to be ready [..] mysql -h 127.0.0.1 -P 3306 -u root --password=MY_ROOT_PASS < MY_SQL_SCRIPT.sql 有没有一种方法可以等待docker容器内的进入MySQL设置脚本完成的信号?重击睡眠似乎是次佳的解决方案。 编辑:像这样的bash脚本。不是最优雅,最蛮力的,但就像一种魅力。也许有人会觉得有用。 OUTPUT="Can't connect" while [[ $OUTPUT == *"Can't connect"* ]] do OUTPUT=$(mysql -h $APP_IP -P :$APP_PORT -u yyy --password=xxx …
78 mysql  bash  shell  docker 

8
cut或awk命令以打印第一行的第一字段
我正在尝试打印输出第一行的第一字段。就是这种情况。我只需要SUSE从此输出中打印即可。 # cat /etc/*release SUSE Linux Enterprise Server 11 (x86_64) VERSION = 11 PATCHLEVEL = 2 尝试过cat /etc/*release | awk {'print $1}'但会打印每行的第一个字符串 SUSE VERSION PATCHLEVEL
78 linux  bash  unix  awk 

6
检查文件是否可执行
我想知道在不执行程序的情况下检查程序是否可以通过bash执行的最简单方法是什么?它至少应检查该文件是否具有执行权限,并且与当前系统具有相同的体系结构(例如,不是Windows可执行文件或其他不受支持的体系结构,如果系统是32位,则不是64位,...)。
78 bash  tcsh 

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.