Questions tagged «test»

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

5
为什么在[[]]测试中使用双引号?
假设我们在bash脚本中有2个整数: value1=5 value2=3 那为什么要在测试中使用双引号呢?例如: if [[ "$value1" -eq "$value2" ]] 为什么不只使用以下内容? if [[ $value1 -eq $value2 ]] 对我来说,双引号没有任何意义。
23 bash  shell  quoting  variable  test 


3
不相等的语法重要吗?
在编写脚本时,我通常使用以下语法编写ifs,因为我很容易理解接下来发生的事情是不正确的。 if [ ! "$1" = "$2" ]; then 其他人说下面的方法更好 if [ "$1" != "$2" ]; then 问题是当我问为什么以及是否存在差异时,没有人似乎没有答案。 那么,这两种语法之间有什么区别吗?其中一个比另一个安全吗?还是仅仅是偏好/习惯的问题?
22 shell  test 

3
比较Bash中的两个字符串
我的ifbash脚本中包含以下代码块: if [ ${PACKAGENAME} -eq kakadu-v6_4-00902C ]; then echo "successfully entered if block!!" fi if即使$PACKAGENAME等于,脚本执行也不会进入我的程序段kakadu-v6_4-00902C。我究竟做错了什么?

3
将变量作为字符串或整数进行比较时,有什么主要区别
出于好奇,在进行bash变量比较(其值为an integer)时,可以对照声明为an int或as的一些预定义值对其进行测试string。 示例脚本: #!/bin/bash f1() { [ "$1" == "1" ] && echo "$FUNCNAME: \"1\" compared as string" } f2() { [[ "$1" -eq 1 ]] && echo "$FUNCNAME: \"1\" compared as int" } f1 $1 f2 $1 输出: $ ./param.sh 1 f1: "1" compared as string f2: "1" …
22 bash  shell  test 


2
括号表达式(无范围)与bash中的意外字符匹配
我在Linux上使用bash。我从以下if语句中获得了成功,但是这不应该返回失败代码吗? if [[ ■ = [⅕⅖⅗] ]] ; then echo yes ; fi 正方形不等于任何字符,所以我看不到为什么我得到一个成功代码。 对于我来说,保持双括号很重要。 在这种情况下,还有其他方法可以做一个范围吗,或者还有什么其他建议?
20 bash  locale  test 


3
比较整数:算术表达式或条件表达式
在Bash中,可以使用条件表达式比较两个整数 arg1 OP arg2 OP是一个-eq,-ne,-lt,-le,-gt,或-ge。如果arg1分别等于,不等于,小于,等于或大于arg2,则这些算术二进制运算符返回true 。Arg1和arg2可以是正整数或负整数。 或算术表达式: <= >= < > 比较 == != 平等与不平等 为什么我们有两种不同的方法来比较两个整数?什么时候使用? 例如,[[ 3 -lt 2 ]]使用条件表达式,并(( 3 < 2 ))使用算术表达式。当比较为真时,两者都返回0 比较两个整数时,这两种方法是否可以始终互换使用?如果是,为什么Bash有两种方法而不是一种?

3
如果条件出现括号,为什么没有空格时出现语法错误?
我使用下面的脚本将脚本从一年的开始两天开始运行时向后移动两天,并且还检查每个月的第一天和第二天并向后移动两天。 if [$month="01"] && [$day="01"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [$month="01"] && [$day="02"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [ $day = "01" ]; then date="$last_month/$yes_day/$year" fulldate="$year$last_month$yes_day" else if [ $day = "02" ]; then date="$last_month/$yes_day/$year" fulldate="$year$last_month$yes_day" else date="$month/$yes_day/$year" fulldate="$year$month$yes_day" fi fi fi fi 但我不好得到以下错误消息 Etime_script.sh: line 19: [06=01]: command not …


3
bash:我摔坏了[[<]]
我正在编写bash脚本,突然开始出现此行为: [[ 1 &lt; 2 ]]; echo $? # outputs 0 [[ 2 &lt; 13 ]]; echo $? # outputs 1 但-lt运作良好: [[ 1 -lt 2 ]]; echo $? # outputs 0 [[ 2 -lt 13 ]]; echo $? # outputs 0 我不小心&lt;以某种方式覆盖了吗? 这是我编写的用于测试此行为的脚本: #!/bin/bash for a in {1..5} do …
14 bash  test 

5
如何在Shell脚本中比较程序的版本?
假设我想比较gcc版本以查看系统是否安装了最低版本。 要检查gcc版本,我执行了以下命令 gcc --version | head -n1 | cut -d" " -f4 输出是 4.8.5 因此,我写了一个简单的if语句来对照其他值检查该版本 if [ "$(gcc --version | head -n1 | cut -d" " -f4)" -lt 5.0.0 ]; then echo "Less than 5.0.0" else echo "Greater than 5.0.0" fi 但这会引发错误: [: integer expression expected: 4.8.5 我理解我使用字符串进行比较并且-lt需要整数的错误。那么,还有其他方法可以比较版本吗?



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.