Questions tagged «test»

这是关于Unix实用程序“ test”的,它也被称为“ [”或其外壳语法[[…]]的变体。对于有关测试软件和设置的问题,请使用“测试”标签。

6
Bash运算符[[vs [vs(vs((??
对于在bash中使用这些运算符(括号,双括号,括号和双括号)有何不同之处,我有些困惑。 [[ , [ , ( , (( 我见过人们在if语句上使用它们,例如: if [[condition]] if [condition] if ((condition)) if (condition)
243 bash  shell  test 

4
为什么带无引号的空格的参数扩展在双括号“ [[”内有效,而在单括号“ [”内无效?
我对使用单括号或双括号感到困惑。看下面的代码: dir="/home/mazimi/VirtualBox VMs" if [[ -d ${dir} ]]; then echo "yep" fi 尽管字符串包含空格,它仍可以完美地工作。但是当我将其更改为单括号时: dir="/home/mazimi/VirtualBox VMs" if [ -d ${dir} ]; then echo "yep" fi 它说: ./script.sh: line 5: [: /home/mazimi/VirtualBox: binary operator expected 当我将其更改为: dir="/home/mazimi/VirtualBox VMs" if [ -d "${dir}" ]; then echo "yep" fi 它工作正常。有人可以解释发生了什么吗?什么时候应该在变量周围"${var}"加上双引号,以防止空格引起问题?
86 bash  quoting  ksh  test 


3
如何检查文件是否是目录的符号链接?
我可以检查文件是否存在,是否是带有-L的符号链接 for file in *; do if [[ -L "$file" ]]; then echo "$file is a symlink"; else echo "$file is not a symlink"; fi done 如果它是带有-d的目录: for file in *; do if [[ -d "$file" ]]; then echo "$file is a directory"; else echo "$file is a regular file"; …
64 bash  shell  test 

5
“ / bin / [”究竟如何工作?
我总是很惊讶文件夹中/bin有一个[程序。 当我们做类似的事情时,这就是所谓的if [ something ]吗? 通过[在shell中显式调用该程序,它会要求一个对应的],当我提供右括号时,无论我在括号之间插入什么,它似乎都无济于事。 不用说,有关帮助有关程序不能正常工作,即无论是通常的方式man [,也没有[ --help工作。
50 shell  test 

7
test或[或[[在bash外壳之间和其他外壳之间都更容易移植吗?
我知道我能做 $ [ -w /home/durrantm ] && echo "writable" writable 要么 $ test -w /home/durrantm && echo "writable" writable 要么 $ [[ -w /home/durrantm ]] && echo "writable" writable 我喜欢使用第三种语法。它们在所有方面以及所有消极和极端情况下是否等效?在可移植性方面是否存在任何差异,例如在Ubuntu和OS X上的bash或较旧/较新的bash版本(例如4.0之前/之后)之间,它们是否都以相同的方式扩展表达式?

2
Bash测试:“ =〜”是做什么的?
#!/bin/bash INT=-5 if [[ "$INT" =~ ^-?[0-9]+$ ]]; then echo "INT is an integer." else echo "INT is not an integer." >&2 exit 1 fi 领导~在开始的正则表达式中做了什么?
39 bash  test 


6
检查输入数字是否为整数
我正在尝试检查输入是否为整数,并且已经遍历了一百次,但是没有看到错误。las,它不起作用,它会触发所有输入(数字/字母)的if语句 read scale if ! [[ "$scale" =~ "^[0-9]+$" ]] then echo "Sorry integers only" fi 我玩过引号,但要么错过了它,要么什么都没做。我做错了什么?有没有更简单的方法来测试输入是否仅仅是INTEGER?


4
测试shell脚本中变量是否为空
我已经看到以下技术在许多不同的shell上多次使用,以测试变量是否为空: if [ "x$1" = "x" ]; then # Variable is empty fi 与更规范的用法相比,使用此方法有什么好处if [ -z "$1" ]吗?可能是可移植性问题吗?

2
字符串为左括号时,shell括号测试错误
我曾经对以下事实充满信心:对字符串加引号始终是一种好习惯,以避免shell对其进行解析。 然后我遇到了这个: $ x='(' $ [ "$x" = '1' -a "$y" = '1' ] bash: [: `)' expected, found 1 试图找出问题,并得到相同的错误: $ [ '(' = '1' -a '1' = '1' ] bash: [: `)' expected, found 1 我解决了这样的问题: [ "$x" = '1' ] && [ "$y" = '1' ] 我仍然需要知道这里发生了什么。
27 shell  test 


5
如果一起测试和查找命令,如何使用bash的?
我有一个包含崩溃日志的目录,并且我想在基于查找命令的bash脚本中使用条件语句。 日志文件以以下格式存储: /var/log/crashes/app-2012-08-28.log /var/log/crashes/otherapp-2012-08-28.log 我希望if语句仅在存在最近5分钟内已修改的特定应用程序的崩溃日志时才返回true。find我将使用的命令是: find /var/log/crashes -name app-\*\.log -mmin -5 我不确定如何if正确地将其合并到语句中。我认为这可能有效: if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then service myapp restart fi 我不清楚一些地方: 我已经看过if标志,但是我不确定应该使用哪一个(如果有的话)。 我是否需要该test指令,还是应该直接针对find命令的结果进行处理,还是可以find... | wc -l用来获取行数? 回答这个问题不是100%必要的,而是test用于测试命令返回的返回码吗?而且它们在stdout/ 之外是看不见的stderr。我阅读了该man页面,但对于何时使用test以及如何对其进行调试仍然不清楚。

4
以bash开头:-lt和-gt参数
我从bash开始,发现以下内容: if test $first -lt $second then echo $first is lower than $second else if test $first -gt $second then echo $first is higher than $second else echo $first and $second are equals fi fi 对于阅读脚本并执行它,我知道它的作用,但不知道-lt和-gt的作用。 有人可以告诉我这种“工具”的名称是什么,它们(-lt和-gt)的作用是什么?谢谢!
24 bash  shell  test 

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.