#/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
。
答案 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"