使用GNU bash(version 4.0.35(1)-release(x86_64-suse-linux-gnu),我想否定正则expression式的testing,例如,我想有条件地向PATHvariables添加一个path,如果path不在那里,如: TEMP=/mnt/silo/bin if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi TEMP=/mnt/silo/Scripts: if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi TEMP=/mnt/silo/local/bin if [[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH; else PATH=$PATH:$TEMP; fi export PATH 我确信有一百万种方法可以做到这一点,但是我想知道的是,如果条件可以被否定,就像在(错误的)中一样: TEMP=/mnt/silo/bin if ![[ ${PATH} =~ ${TEMP} ]] ; then PATH=$PATH:$TEMP; […]
我见过这个例子: hello=ho02123ware38384you443d34o3434ingtod38384day echo ${hello//[0-9]/} 它遵循以下语法: ${variable//pattern/replacement} 不幸的是, pattern字段似乎不支持完整的正则expression式语法(如果我使用.或\s ,例如,它试图匹配文字字符)。 我如何使用完整的正则expression式来search/replacestring?
我有一个bashvariables深度,我想testing它是否等于0.如果是,我想停止执行脚本。 到目前为止我有: zero=0; if [ $depth -eq $zero ]; then echo "false"; exit; fi 不幸的是,这导致: [: -eq: unary operator expected (由于翻译可能有点不准确) 请问,我如何修改我的脚本来使其工作?
我正在尝试在bash中编写一个脚本来检查用户input的有效性。 我想匹配input(比如variablesx )到一个有效值列表。 我现在提出的是: for item in $list do if [ "$x" == "$item" ]; then echo "In the list" exit fi done 我的问题是如果有一个更简单的方法来做到这一点, 就像大多数编程语言的list.contains(x)一样。 加成: 说清单是: list="11 22 33" 我的代码将回显消息只为这些值,因为list被视为一个数组而不是一个string,所有的string操作将validation1而我希望它失败。
我想知道是否有可能将文件拆分成相等的部分( 编辑: =除了最后一个都是平等的),而不会破坏行? 在Unix中使用split命令,行可能会被打破一半。 有没有一种方法可以将文件分成5个等份,但还是只包含整行文件(如果其中一个文件稍大或更小,没有问题)? 我知道我可以计算行数,但是我必须为bash脚本中的许多文件执行此操作。 非常感谢!
我在我的bash脚本中有一个variables,其值是这样的: ~/a/b/c 请注意,这是未扩展的代字号。 当我做这个variables的ls -lt(称为$ VAR)时,我没有得到这样的目录。 我想让bash解释/展开这个variables而不执行它。 换句话说,我想bash运行eval,但不运行评估的命令。 这是可能的bash? 我怎样才能在没有扩展的情况下将其传递给我的脚本? 我用双引号括住了这个论点。 试试这个命令来看看我的意思: ls -lt "~" 这正是我所处的情况。我想要扩展波浪号。 换句话说,我应该用什么来取代魔术,使这两个命令相同: ls -lt ~/abc/def/ghi 和 ls -lt $(magic "~/abc/def/ghi") 请注意〜/ abc / def / ghi可能存在也可能不存在。
我使用的是Ubuntu 11.10。 当我在terminalinput命令“emacs”时,它将emacs作为一个单独的窗口打开。 如何在terminal内打开它,如nano编辑器?
我在Bash有一个数组,例如: array=(acbf 3 5) 我需要sorting数组。 不仅仅是以sorting的方式显示内容,而是使用sorting的元素来获取新的数组。 新的sorting数组可以是一个全新的或旧的。
我想从文件末尾删除一些n行。 这可以使用sed完成吗? 例如,要删除2到4行,我可以使用 $ sed '2,4d' file 但是我不知道行号。 我可以删除最后一行使用 $sed $d file 但我想知道从最后删除n行的方法。 请让我知道如何使用sed或其他方法做到这一点。
如何使用grep在当前目录中search包含string“hello”的任何和所有文件,并仅显示.h和.cc文件?