Questions tagged «bash»

与其他Bourne / POSIX shell相对,GNU的Bourne Again SHell特有的问题。对于一般关于Unix shell的问题,请改用/ shell标记。

7
如何在脚本中使用空格作为变量格式化日期输出?
我想使date命令具有很好的格式,如下所示: $ date +"%Y-%m-%d %H:%M:%S" 2015-09-17 16:51:58 但我想将其保存在变量中,因此可以从如下脚本中调用: echo "$(nice_date) [WARNING] etc etc" 但是它不起作用 $ nice_date="date +%Y-%m-%d %H:%M:%S" $ echo "$($nice_date)" date: extra operand ‘%H:%M:%S’ Try 'date --help' for more information. $ nice_date="date +\"%Y-%m-%d %H:%M:%S\"" $ echo "$($nice_date)" date: extra operand ‘%H:%M:%S"’ Try 'date --help' for more information. $ nice_date='date …
13 bash  date 

2
如何在Bash中增加局部变量?
数据 1 \begin{document} 3 码 #!/bin/bash function getStart { local START="$(awk '/begin\{document\}/{ print NR; exit }' data.tex)" echo $START } START2=$(getStart) echo $START2 返回,2但我想要3。我通过关于如何在bash脚本中添加数字的答案未成功更改结尾: START2=$((getStart+1)) 如何在Bash脚本中增加局部变量?

3
如何理解“ cat> file_name << blah”命令?
在以下命令中,cat接受here-doc的内容并将其重定向到名为conf的文件: cat &gt; conf &lt;&lt; EOF var1="cat" var2="dog" var3="hamster" EOF 如何在这里了解命令的顺序?bash首先是否要处理其他所有内容(here-doc部分),最后看是否要处理&gt; conf?

3
在OS X上〜的意外Bash完成
我按~TabTab了bash命令提示符,得到了意外的完成情况。 首先,它看起来像/Users目录中的所有人一样,还有更多。 然后,我认为它正在对带有“ home”目录的人们进行反向查找/etc/password,或者也许是/var/empty-这似乎是正确的。 我很好奇是什么真正回事,为什么这个作品它。

2
Fash中的Flock和exec安全吗?
我见过的“标准”锁定代码片段类似于... ( flock -n 200 || exit 1; # do stuff ) 200&gt;program.lock exec在这一点上使用是否安全(测试似乎如此)?子进程会保留锁吗? ( flock -n 200 || exit 1; exec /usr/bin/python vendors-notcoolstuff.py ) 200&gt;program.lock 我隐约记得执行进程保留了打开的文件描述符,并且由于flock使用文件描述符,它应该可以工作。但是我找不到任何可以使之明确和明确的文档。 作为记录,这特定于Linux。
13 bash  lock 

4
删除目录时出现“ ls”错误
我有两个弹壳。第一个位于目录A中。第二个删除目录A,然后重新创建它。当我回到第一个shell并输入时ls,输出为: ls: cannot open directory .: Stale file handle 为什么?我认为第一个外壳程序(在不存在的目录中保持打开状态的外壳程序)将在等待下一个命令时“冻结”,并且不会“意识到”该目录已被删除并重新创建。除了字符串以外,shell是否对它的当前工作目录保留“更深”的引用$PWD?


2
变量如何使用“〜”进行CD?
如何使用变量- $BASE在CD中。我尝试了以下操作,但出现错误 $ cd ~/z/repo_1_ruby_193/ 23:23:57 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 $ BASE="~/z" 23:24:03 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193 $ cd $BASE/repo_1_ruby_193 -bash: cd: ~/z/repo_1_ruby_193: No such file or directory 23:24:25 durrantm Castle2012 /home/durrantm/z/repo_1_ruby_193

5
如何以编程方式判断文件名是否与Shell Glob模式匹配?
我想告诉您一个字符串$string是否可以通过glob模式进行匹配$pattern。 $string可能是也可能不是现有文件的名称。我怎样才能做到这一点? 假设我的输入字符串采用以下格式: string="/foo/bar" pattern1="/foo/*" pattern2="/foo/{bar,baz}" 我想找到一个bash成语,决定是否$string将被匹配$pattern1,$pattern2或任何其它任意的glob模式。到目前为止,这是我尝试过的: [[ "$string" = $pattern ]] 除了$pattern被解释为字符串模式而不是全局模式之外,这几乎可以工作。 [ "$string" = $pattern ] 这种方法的问题$pattern是先进行扩展,然后在之间进行字符串比较,然后$string对进行扩展$pattern。 [[ "$(find $pattern -print0 -maxdepth 0 2&gt;/dev/null)" =~ "$string" ]] 该$string文件有效,但前提是包含一个存在的文件。 [[ $string =~ $pattern ]] 这不起作用,因为=~运算符导致$pattern将其解释为扩展的正则表达式,而不是全局或通配符模式。
13 bash  wildcards 

3
为什么[az]星号匹配数字?
我在当前路径下有3个目录。 $ls a_0db_data a_clean_0db_data a_clean_data $ls a_*_data a_0db_data: a_clean_0db_data: a_clean_data: $ls a_[a-z]*_data a_clean_0db_data: a_clean_data: 我希望最后一个ls命令只能匹配a_clean_data。为什么它也与包含的匹配0? bash --version GNU bash, version 4.2.24(1)-release (i686-pc-linux-gnu)

2
Bash:进程替换和标准输入
以下行很明显: echo "bla" | foo | bar 但是下面的那些也一样吗? echo "bla" | bar &lt;(foo) echo "bla" | bar &lt; &lt;(foo) 其中foo,并bar从标准,为什么读“喇嘛”? 我的意思是,我当然可以对其进行编码和检查,但是我不确定它是否是已定义的行为,或者我是否在利用我不应该依赖的功能。

3
使用vim命令自动执行Bash
在bash中,当发出vim比路径深两个目录的命令时,路径的自动补全最近已停止工作(它按预期与其他命令(如ls和cd)一起正常工作。 例如,如果我键入ls .config/btsync/bt然后按TAB键,它将展开为ls .config/btsync/btsync.conf。 如果我键入vim .config/bt然后按TAB键,它将展开为vim .config/btsync/。 但是,如果我键入vim .config/btsync/bt然后按TAB键,则什么也不会发生(我希望它会扩展为vim .config/btsync/btsync.conf,如上ls例所示)。 当以我自己的用户身份运行和以su身份运行时,我遇到相同的问题。 我读了这篇文章,其中提到较早版本的bash-completion有问题,但我正在运行2.1-5。 更新:经过一些额外的测试,我发现根本问题是bash 仅会完成目录名称,而不会完成文件名。 更新:事实证明,这bash-completion是总体原因。请参阅我对已接受答案的第二条评论。 如有任何关于此行为潜在原因的建议,我们将不胜感激!

4
使用流程替换时,如何捕获退出代码/正确处理错误?
我有一个脚本,该脚本使用从SO上的Q&A采取的以下方法将文件名解析为数组: unset ARGS ARGID="1" while IFS= read -r -d $'\0' FILE; do ARGS[ARGID++]="$FILE" done &lt; &lt;(find "$@" -type f -name '*.txt' -print0) 这很好用,可以完美处理所有类型的文件名变体。但是,有时,我会将不存在的文件传递给脚本,例如: $ findscript.sh existingfolder nonexistingfolder find: `nonexistingfile': No such file or directory ... 通常情况下,我会让脚本RET=$?使用类似的代码捕获退出代码,然后使用它来决定如何继续。这似乎不适用于上面的流程替换。 在这种情况下正确的程序是什么?如何捕获返回码?还有其他更合适的方法来确定替换过程中是否出了问题吗?

3
Bash脚本错误:预期为整数表达式
我遇到了一个很奇怪的问题,我在多个服务器上运行脚本(Bash),并且它停止在其中一台服务器上工作(在所有其他服务器上都可以正常工作)。 这是脚本的问题部分:(我自己没有写过,所有功劳都归功于“ Rich”)(http://www.notrainers.org/monitoring-memory-usage-on-linux-with-nagios- and-nrpe /) if [ "$result" -lt "$warn_level" ]; then #Line 56 echo "Memory OK. $result% used." exit 0; elif [ "$result" -ge "$warn_level" ] &amp;&amp; [ "$result" -le "$critical_level" ]; then #Line 59 echo "Memory WARNING. $result% used." exit 1; elif [ "$result" -gt "$critical_level" ]; then …
13 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.