2015-11-24 46 views
-1

我是bash的新手,我需要在代码中编写if语句,但我不确定如何编写,因此如果找到$someVar,那么运行此操作即可。在这种情况下,$someVar是一个文件,我不想输出文本,只是在创建文件的情况下运行另一行代码。Bash写入if语句

代码:

rm /var/path/to/folder/$someVar 

for i in `seq 3 253` 

do 

echo $ALLOCATION.$i >> /var/path/to/folder/$someVar 
+0

简短的回答'如果[[-n $ someVar];然后..做你的东西.. fi'任何bash引用将解释和'man bash'也将解释可用的*条件表达式*(或测试)的类型。 –

+0

@Joe已更新问题 –

+0

@ DavidC.Rankin谢谢,我也更新了我的问题 –

回答

1

要检查的/var/path/to/folder/"$someVar"的存在,那么你可以使用:

#!/bin/bash 

if [[ -f /var/path/to/folder/$someVar ]]; then 

    rm /var/path/to/folder/"$someVar" 

fi 

for i in `seq 3 253`; do 

     echo $ALLOCATION.$i >> /var/path/to/folder/"$someVar" 

done 

你也可以使用一个简单的复合命令

#!/bin/bash 

[[ -f /var/path/to/folder/$someVar ]] && rm /var/path/to/folder/"$someVar" 

for i in `seq 3 253`; do 

    echo $ALLOCATION.$i >> /var/path/to/folder/"$someVar" 

done 

注意:[[ ... ]]之内,您不必引用变量来防止变量中的spaces。在所有其他情况下,您应该(根据经验)。

另外,还要注意检查文件是否是(即您有权删除它),你可以使用[[ -w /var/path/to/folder/$someVar ]]