我正在看下面的代码:
if [ -z $2 ]; then
echo "usage: ...
Run Code Online (Sandbox Code Playgroud)
(3个点是不相关的使用细节.)
也许我在谷歌搜索错误,但我找不到该-z选项的解释.
在这个特殊情况下,我想在Bash中添加一个确认
Are you sure? [Y/n]
对于Mercurial来说hg push ssh://username@www.example.com//somepath/morepath,它实际上是一个别名.是否有可以添加到别名的标准命令来实现它?
原因是hg push并且hg out听起来很相似,有时当我想要时hgoutrepo,我可能会意外地输入hgpushrepo(两者都是别名).
更新:如果它可以像是带有另一个命令的内置命令,例如:confirm && hg push ssh://...那个很棒......只是一个可以请求a yes或者no继续其余命令的命令yes.
是否有人可以解释之间的区别&&,||,-a,和-oUnix的运营商?
这两种类型的使用有哪些限制?
是否只是在条件中使用标志时应该使用&&和||运算符?
如:
[ "$1" = "yes" ] && [ -r $2.txt ]
Run Code Online (Sandbox Code Playgroud)
与:
[ "$1" = "yes" -a $2 -lt 3 ]
Run Code Online (Sandbox Code Playgroud) 在我的bash脚本中,我有一个函数为后面的main函数的条件返回0或1(true或false).
function1 () {
if [[ "${1}" =~ "^ ...some regexp... $" ]] ; then
return 1
else
return 0
fi
}
Run Code Online (Sandbox Code Playgroud)
然后在我的主要功能:
main () {
for arg in ${@} ; do
if [ function1 ${arg} ] ; then
...
elif [ ... ] ; then
...
fi
done
}
Run Code Online (Sandbox Code Playgroud)
然而,当我运行这个脚本时它总是给我一个错误信息"[:function1:一元运算符预期"
有人可以帮我吗?
好的,所以在我的脚本中(这是我第一次使用bash)我遇到了2个一元运算符预期的错误.代码本身实际上工作正常,但是它在运行时向我展示了这些错误.
[: !=: unary operator expected
Run Code Online (Sandbox Code Playgroud)
为线
if [ ${netmask[1]} != "" ]; do
Run Code Online (Sandbox Code Playgroud)
所以对于第一个错误,当它抛出${netmask[1]}是""(null),我已经尝试了多种想法,但仍无法得到它没有在这个过程中返回的错误工作
任何帮助,将不胜感激!
编辑:通过添加引号(grrr)解决
if [ "${netmask[1]}" != "" ]; do
Run Code Online (Sandbox Code Playgroud) 我已经看到有关同一问题的问题,但所有问题都与字符串有关.整数怎么样,为什么我得到"一元运算符预期"错误?
if [ $(date +%k%M) -ge ${!BLOCK1FRAN} ] ; then whatever ; fi
Run Code Online (Sandbox Code Playgroud) 我不写很多Bash,所以我有点难过如何解决这个问题.我需要检查命令返回的值是否大于x.当它运行虽然我得到[: -gt: unary operator expected了我无法修复.
这是我的剧本,
#!/bin/sh
ERROR=0
PHPCPDLevel=100
# PHPCPD
echo "PHP CopyPaste Detection (Limit is at least ${PHPCPDLevel}%"
PHPCPD="phpcpd ."
if [[ `echo $PHPCPD | grep "%" | cut -d'.' -f1` -gt "$PHPCPDLevel" ]]
then
echo $PHPCPD
ERROR=1
else
echo "... -> Only `echo $PHPCPD | grep "%" | cut -d'.' -f1`%"
fi
echo "Finished!"
exit $ERROR
Run Code Online (Sandbox Code Playgroud)
更新: 我想我已经做到了:
#!/bin/sh
ERROR=0
PHPCPDLevel=25
# PHPCPD
echo "PHP CopyPaste Detection (Limit is at most ${PHPCPDLevel}%)"
PHPCPD="phpcpd …Run Code Online (Sandbox Code Playgroud) bash ×7
alias ×1
boolean ×1
confirmation ×1
if-statement ×1
integer ×1
operators ×1
shell ×1
unix ×1