所以我正在学习Bash而且我不知道为什么我的if
语句不起作用(如果它有任何不同,在putty中工作)。我已经尝试在线查看应该如何构建if
语句并遵循它确保我得到所有详细信息。当我运行它时,if
的两个都是正面的,并且它们都被执行而不是只执行1.
echo -n "Enter file name: "
read x
echo "file $x with numbers (Y/N)?"
read y
if [ "$y"="n" ];
then
cat $x
fi
if [ "$y"="y" ];
then
cat -n $x
fi
exit
任何人都可以帮忙吗?
答案 0 :(得分:0)
请记住,在if条件中需要有一个空格,否则它就变成了一个赋值。 https://uvesway.wordpress.com/2013/03/11/some-whitespace-pitfalls-in-bash-programming/
答案 1 :(得分:0)
"$y"="n"
既不是条件测试也不是作业。它只是一个字符串,例如,如果$y
为'y',则"$y"="n"
与文字'y=n'
相同,并且此文字字符串被视为{{{}的单个参数1}}(test
)命令。
以下条件总是评估为真:
[
而空字符串使其成为假:
if [ abcd ]; then echo true; fi
bash中的空格不是可选的(无处不在)。即使
if [ '' ]; then echo true; else echo false; fi
看起来像一个语法,它也不是;[ abcd
是一个命令([
),test
是它的第一个位置参数。