Questions tagged «bash»

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

14
如何检查BASH列表中是否存在变量
我试图用bash编写脚本来检查用户输入的有效性。 我想将输入(例如变量x)与有效值列表进行匹配。 我目前想出的是: for item in $list do if [ "$x" == "$item" ]; then echo "In the list" exit fi done 我的问题是,是否有更简单的方法可以做到这一点, 就像list.contains(x)大多数编程语言一样。 另外: 说的清单是: list="11 22 33" 我的代码将仅针对那些值响应消息,因为list它被视为数组而不是字符串,所有的字符串操作都将验证,1而我希望它失败。
137 linux  bash 


5
使用bash,如何将标准错误传递到另一个进程?
众所周知,如何将一个流程的标准输出传送到另一个流程的标准输入中: proc1 | proc2 但是,如果我想将proc1的标准错误发送到proc2并将标准输出留到当前位置怎么办?您可能会想到bash以下命令: proc1 2| proc2 但是,a,不。有什么办法吗?
137 bash  pipe  stderr 

9
Bash:语法错误:重定向意外
我在脚本中执行此操作: read direc <<< $(basename `pwd`) 我得到: Syntax error: redirection unexpected 在Ubuntu机器上 /bin/bash --version GNU bash, version 4.0.33(1)-release (x86_64-pc-linux-gnu) 虽然我没有在另一台suse机器上收到此错误: /bin/bash --version GNU bash, version 3.2.39(1)-release (x86_64-suse-linux-gnu) Copyright (C) 2007 Free Software Foundation, Inc. 为什么会出错?
137 bash  ubuntu 

3
在Bash中模拟do-while循环
在Bash中模拟do-while循环的最佳方法是什么? 我可以在进入while循环之前检查条件,然后继续在循环中重新检查条件,但这是重复的代码。有没有更清洁的方法? 我的脚本的伪代码: while [ current_time <= $cutoff ]; do check_if_file_present #do other stuff done check_if_file_present如果在$cutoff时间之后启动,则不会执行此操作,并且会在一段时间后启动。
136 bash  loops  do-while 

7
Bash / sh-&&和;之间的区别
我通常;在一行中组合多个命令,但是有些人更喜欢&&。有什么区别吗?例如,cd ~; cd -并且cd ~ && cd -似乎让同样的事情。哪个版本更可移植,例如bash子集(例如Android的shell或类似版本)将支持该版本?



16
仅当cron作业尚未运行时才运行
因此,我试图将cron作业设置为我创建的守护程序的一种看门狗。如果守护程序出错并失败,我希望cron作业定期重新启动它...我不确定这样做的可能性如何,但是我通读了一些cron教程,但找不到任何可以做我的事情正在寻找... 我的守护程序是从Shell脚本开始的,所以我真的只是在寻找一种方法来运行cron作业,除非该作业的前一次运行仍未运行。 我发现了这篇文章,它确实为我试图使用锁定文件提供了解决方案,但我不确定是否有更好的方法来做... 谢谢你的帮助。
136 linux  bash  cron  watchdog 

15
如何在bash中手动扩展特殊变量(例如:〜波浪号)
我的bash脚本中有一个变量,其值如下所示: ~/a/b/c 请注意,它是未扩展的代字号。当我对该变量执行ls -lt(称为$ VAR)时,没有得到这样的目录。我想让bash解释/扩展这个变量而不执行它。换句话说,我希望bash运行eval但不运行评估的命令。bash有可能吗? 我如何在不扩展的情况下将其传递到脚本中?我用双引号将参数引起来。 尝试以下命令以了解我的意思: ls -lt "~" 这正是我所处的情况。我希望扩展代字号。换句话说,我应该用魔术代替什么来使这两个命令相同: ls -lt ~/abc/def/ghi 和 ls -lt $(magic "~/abc/def/ghi") 注意〜/ abc / def / ghi可能存在或可能不存在。

3
bash分配默认值
$ {parameter:= word}分配默认值。如果参数未设置或为空,则将单词的扩展分配给参数。然后替换参数的值。不能以此方式分配位置参数和特殊参数。 我以为我可以使用此功能来写代码,${LONG_VARIABLE_NAME:=hello}而不是使用更长的代码LONG_VARIABLE_NAME=${LONG_VARIABLE_NAME:-hello},但是现在bash也会尝试执行“ hello”,并且给出了未找到的命令。有什么办法可以避免这种情况?还是我必须坚持使用后者?有人可以举例说明分配默认值实际上有用吗?
135 bash 

4
Bash等式运算符(==,-eq)
有人可以解释一下-eq和==bash脚本之间的区别吗? 以下内容之间有什么区别吗? [ $a -eq $b ] 和 [ $a == $b ] 难道仅仅是==仅用于当变量包含数字?
135 bash 

15
如何在Bash中解析XML?
理想情况下,我想做的是: cat xhtmlfile.xhtml | getElementViaXPath --path='/html/head/title' | sed -e 's%(^<title>|</title>$)%%g' > titleOfXHTMLPage.txt
134 xml  bash  xhtml  shell  xpath 

25
Bash模板:如何使用Bash从模板构建配置文件?
我正在编写一个脚本,为自己的Web服务器自动为Apache和PHP创建配置文件。我不想使用任何CPanel或ISPConfig之类的GUI。 我有一些Apache和PHP配置文件的模板。Bash脚本需要读取模板,进行变量替换并将已解析的模板输出到某个文件夹中。最好的方法是什么?我可以想到几种方式。哪一个最好,或者可能有更好的方法呢?我想在纯Bash中做到这一点(例如,在PHP中很简单) 1)如何在文本文件中替换$ {}占位符? template.txt: the number is ${i} the word is ${word} script.sh: #!/bin/sh #set variables i=1 word="dog" #read in template one line at the time, and replace variables #(more natural (and efficient) way, thanks to Jonathan Leffler) while read line do eval echo "$line" done < "./template.txt" 顺便说一句,我如何在这里将输出重定向到外部文件?如果变量包含引号,我是否需要转义? …


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.