如何在shell脚本中使用-f文件存在比较运算符?

时间:2014-04-03 16:58:58

标签: shell

#/bin/sh

echo "Please enter file name:"
read FILENAME
d=[ -f $FILENAME ]
echo $d

这不起作用。 -f: command not found。那听起来不错。

似乎的另一种变体,但在控制台中添加了换行符。

#/bin/sh

echo "Please enter file name:"
read FILENAME
d=$(test -f $FILENAME )
echo $d

但我尝试测试$d的值,它既不是\n也不是"0",也不是1

1 个答案:

答案 0 :(得分:3)

您没有看到任何输出,因为$d为空,因此您实际上是回显空字符串(echo添加了尾随换行符)。 $d为空,因为test不会返回任何要分配给它的输出。相反,当您使用test时,重要的是退出状态,您可以使用$?捕获:

echo "Please enter file name:"
read FILENAME
test -f $FILENAME
echo $?

或者,您可以在其他条件下将其用作表达式:

read -p "Please enter file name: " FILENAME
[[ -f "$FILENAME" ]] && echo "This is a valid file" || echo "Not a valid file"