Pra*_*chi 3 command-line bash syntax
我的shell脚本代码如下:
echo "Enter file name";
read fname;
if [-f$fname];
then
echo "File already exists";
fi`
Run Code Online (Sandbox Code Playgroud)
但是,当我运行脚本时,出现此错误:
[-ffile]: not found
Run Code Online (Sandbox Code Playgroud)
我试过间距,-f $fname但我仍然遇到同样的错误。为什么会发生这种情况,我该如何解决?
您可能添加了一个包含空格的值。为了防止这种情况,请始终引用您的变量:
if [ -f "$fname" ]
Run Code Online (Sandbox Code Playgroud)
另外,还要注意[和]周围需要的空间。为什么?因为[是命令,所以必须与前面的语句用空格隔开。您可以通过键入 阅读有关它的信息man test。
全部一起:
echo "Enter file name";
read -r fname;
if [ -f "$fname" ]; then
echo "File already exists";
fi
Run Code Online (Sandbox Code Playgroud)
查看有关引号如何重要的测试:
$ touch "a b"
$ filename="a b"
$ [ -f $filename ] && echo "exists!"
bash: [: a: binary operator expected
$ [ -f "$filename" ] && echo "exists!"
exists!
Run Code Online (Sandbox Code Playgroud)