Questions tagged «bash»

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


14
检查在Unix Shell脚本中设置环境变量的简洁方法是什么?
我有一些Unix shell脚本,在开始做事之前,我需要检查某些环境变量是否已设置,因此我要执行以下操作: if [ -z "$STATE" ]; then echo "Need to set STATE" exit 1 fi if [ -z "$DEST" ]; then echo "Need to set DEST" exit 1 fi 这是很多打字。有没有更优雅的习惯用法来检查是否设置了一组环境变量? 编辑:我应该提到这些变量没有有意义的默认值-如果未设置任何脚本,则脚本应该出错。
500 bash  unix  shell 

23
ls命令:如何获取递归全路径列表,每个文件一行?
我怎样才能让ls吐出一排递归的单行路径列表? 例如,我只想要带有完整路径的文件的平面清单: /home/dreftymac/. /home/dreftymac/foo.txt /home/dreftymac/bar.txt /home/dreftymac/stackoverflow /home/dreftymac/stackoverflow/alpha.txt /home/dreftymac/stackoverflow/bravo.txt /home/dreftymac/stackoverflow/charlie.txt ls -a1 几乎可以满足我的需求,但我不需要路径片段,而需要完整路径。
493 bash  command-line  find  ls 

9
从Bash中的字符串中删除固定的前缀/后缀
在我的bash脚本中,我有一个字符串及其前缀/后缀。我需要从原始字符串中删除前缀/后缀。 例如,假设我具有以下值: string="hello-world" prefix="hell" suffix="ld" 如何获得以下结果? result="o-wor"
484 bash 





18
如何从Bash函数返回字符串值
我想从Bash函数返回一个字符串。 我将用Java编写示例以显示我想做的事情: public String getSomeString() { return "tadaa"; } String variable = getSomeString(); 下面的示例在bash中有效,但是有更好的方法吗? function getSomeString { echo "tadaa" } VARIABLE=$(getSomeString)


19
bash / fish命令打印文件的绝对路径
问题:是否有一个简单的sh / bash / zsh / fish / ...命令来打印我提供的文件的绝对路径? 用例:我在目录中/a/b,我想c在命令行上打印文件的完整路径,以便可以轻松地将其粘贴到另一个程序:中/a/b/c。一个简单而又简单的程序可以在处理长路径时为我节省5秒钟左右的时间,最终加起来。因此,令我惊讶的是我找不到标准的实用程序来执行此操作-真的没有吗? 这是一个示例实现abspath.py: #!/usr/bin/python # Author: Diggory Hardy <diggory.hardy@gmail.com> # Licence: public domain # Purpose: print the absolute path of all input paths import sys import os.path if len(sys.argv)>1: for i in range(1,len(sys.argv)): print os.path.abspath( sys.argv[i] ) sys.exit(0) else: print >> sys.stderr, …
448 bash  shell  path 

12
重击忽略特定命令的错误
我正在使用以下选项 set -o pipefail set -e 在bash脚本中停止执行错误。我有大约100行脚本正在执行,并且我不想检查脚本中每一行的返回码。 但是对于一个特定的命令,我想忽略该错误。我怎样才能做到这一点?
444 linux  bash 

4
处理除第一个参数以外的所有参数(在bash脚本中)
我有一个简单的脚本,其中第一个参数保留用于文件名,所有其他可选参数应传递给脚本的其他部分。 使用Google我找到了这个wiki,但是它提供了一个文字示例: echo "${@: -1}" 我什么也无法工作,例如: echo "${@:2}" 要么 echo "${@:2,1}" 我从终端收到“替换错误”。 这是什么问题,我如何处理传递给bash脚本的第一个参数以外的所有参数?
443 bash  shell 

30
检查Bash数组是否包含值
在Bash中,最简单的测试数组是否包含某个值的方法是什么? 编辑:在答案和评论的帮助下,经过一些测试,我想到了这个: function contains() { local n=$# local value=${!n} for ((i=1;i < $#;i++)) { if [ "${!i}" == "${value}" ]; then echo "y" return 0 fi } echo "n" return 1 } A=("one" "two" "three four") if [ $(contains "${A[@]}" "one") == "y" ]; then echo "contains one" fi if …
441 arrays  bash 


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.