我正在尝试在我的bash脚本中进行简单的文件存在检查:
FILE_TO_CHECK=/home/username/path/to/file
if [ ! -f $FILE_TO_CHECK]; #line 9 in actual script
then
echo File not found.
fi
Run Code Online (Sandbox Code Playgroud)
对我来说似乎很简单,但我收到以下错误,我不知道为什么:
/path/to/script: line 9: [: missing `]'
Run Code Online (Sandbox Code Playgroud)
我不是一个bash专家,但我很确定在这种情况下不需要反击.是什么赋予了?
在结束前缺少空间].
你必须明白这[是一个命令及其后面的一切,直到它;是它的论点.Command [期望它的最后一个参数].但是如果省略空格,则]成为前一个参数的最后一个字符.
它似乎[ ]是if语法的一部分.事实并非如此.if必须跟随任何命令,并if评估其退出状态.
if true; then foo; fi
Run Code Online (Sandbox Code Playgroud)
在上面的行true也是一个命令.
$ which true
/bin/true
Run Code Online (Sandbox Code Playgroud)
true 是一个命令,其唯一目的是始终具有真(0)退出状态.
| 归档时间: |
|
| 查看次数: |
1151 次 |
| 最近记录: |