Bash脚本在if语句中比较字符串和变量

时间:2014-08-16 07:11:40

标签: string bash variables comparison

我正在尝试将变量与字符串进行比较,然后执行某些操作并继续执行下一步,但是当我在调试模式下查看它时,变量只显示为{{1}没有任何内容。

''

我得到了这个结果:

#!/bin/bash
echo -e "Enter the name of the document you wish to edit:\c"
read dname
CTYPE= file "$dname" | cut -d\  -f2
echo $CTYPE
VAR="ASCII"
VAR2="cannot"
if [ "$CTYPE" == "$VAR" ]
then
    vi $dname                       
fi

即使我+ VAR=ASCII + VAR2=cannot + '[' '' == ASCII ']' d ''为空,echo为空,并且看到它不为空。

我也尝试过这些其他方式,并得到相同或类似的非工作结果:

CTYPE= file "$dname" | cut -d\  -f2
if [ "$CTYPE" == "$VAR" ]

ctype= file "$dname" | cut -d\  -f2
if [ $ctype = "ASCII" ]

ctype= file "$dname" | cut -d\  -f2
if [ "$ctype" = "ASCII" ]   

ctype= file "$dname" | cut -d\  -f2
if [ "$ctype" == "ASCII" ]

不确定我错过了什么,我已经阅读了很多帖子,我不知道从哪里开始。谢谢!

2 个答案:

答案 0 :(得分:3)

您在CTYPE时遇到错误:

CTYPE=$(file "$dname" | cut -d\  -f2)

=和作业之间不能有任何空格。此外,您希望从file "$dname" | cut -d\ -f2返回,因此您必须将其包含在$()中或使用反引号。

答案 1 :(得分:0)

运行此命令时:

d= date

bash执行此操作:在d命令的持续时间内设置环境变量date(值为空字符串)。这是密集记录的here

正如David告诉您的那样,要捕获命令的外部,您需要

d=$(date)