Macos Bash脚本编写一般问题(条件和变量传递)
我对bash脚本比较陌生,而谷歌在这方面并没有我想象的那么有用。我只是在我的.bash_配置文件中玩一个小密码输入程序,它有如下功能:Macos Bash脚本编写一般问题(条件和变量传递),macos,bash,Macos,Bash,我对bash脚本比较陌生,而谷歌在这方面并没有我想象的那么有用。我只是在我的.bash_配置文件中玩一个小密码输入程序,它有如下功能: read PASSWORD if $PASSWORD != 'pass'; then echo "wrong. exiting" exit fi 不幸的是,这不起作用。我得到了这些错误(达尔文10.6版) 编辑对此帖子表示抱歉。我的浏览器崩溃了,我甚至没有意识到这一点。最后我自己弄明白了——再次抱歉。但是谢谢你的回答 试试看: read PAS
read PASSWORD
if $PASSWORD != 'pass'; then
echo "wrong. exiting"
exit
fi
不幸的是,这不起作用。我得到了这些错误(达尔文10.6版)
编辑对此帖子表示抱歉。我的浏览器崩溃了,我甚至没有意识到这一点。最后我自己弄明白了——再次抱歉。但是谢谢你的回答 试试看:
read PASSWORD
if [ "x$PASSWORD" != "xpass" ] ; then
echo "Wrong. Exiting."
exit 1
fi
exit 0
您缺少方括号。if行应为:
如果[$PASSWORD!=“pass”];然后
或者更好:
如果[“$PASSWORD”!=“pass”];然后
如果$PASSWORD为空,这将避免失败。您可能想了解
读取
命令的两个选项:
-p string
显示不带尾随换行符的提示
及
静音模式。用户键入的字符不会回显到屏幕上
因此,提示输入密码时,您可以执行以下操作:
read -sp "Please enter your password: " PASSWORD
echo
是一个很好的资源 用例/esac构造
read -p "enter: " PASSWORD
case "$PASSWORD" in
"pass") echo "ok;;
* ) echo "not ok";;
esac
编辑:丹尼斯的QN
x=10
y=5
z=1
options=3
expression="$((x> y)) $((y> z)) $((options<=4))"
case "$expression" in
"1 1 1")
echo "x > y and y>z and options <=4";;
*) echo "Not valid";;
esac
x=10
y=5
z=1
选项=3
expression=“$((x>y))$((y>z))$((选项y和y>z以及引号中的选项完成了“x”的预期任务。除非您使用的是需要该技巧的旧shell,否则最好不要使用“x”。在某个时候,我习惯于添加该选项,以确保它工作正常,现在它已自动添加;-)。如果您正在编写特定于Bash的脚本,最好了解[
和[[
之间的区别,这两种脚本提供了额外的功能。请参阅,谢谢!谢谢你们两个(以及你们所有人!)感谢指向Greg的Wiki的链接!当使用简单的If/then/[else]时,为什么要使用案例
够了吗?因为我不想关心比较运算符!=或==或其他什么。原谅我,但我不明白这意味着什么。好吧,让我再问你一次,我为什么要使用if/else?我觉得使用case/esac很舒服,对我来说,它更整洁。好吧,“整洁”是一个有效的意见基础。你会怎么做if[[$x>$y&&$y>$z&&$options
x=10
y=5
z=1
options=3
expression="$((x> y)) $((y> z)) $((options<=4))"
case "$expression" in
"1 1 1")
echo "x > y and y>z and options <=4";;
*) echo "Not valid";;
esac