Man*_*nde 106 bash shell no-op
我在bash(:)中搜索了noop,但无法找到任何好的信息.这个运营商的确切目的或用例是什么?
我试过跟随,它对我来说是这样的:
[mandy@root]$ a=11
[mandy@root]$ b=20
[mandy@root]$ c=30
[mandy@root]$ echo $a; : echo $b ; echo $c
10
30
Run Code Online (Sandbox Code Playgroud)
请告知我这个运营商的任何实例或必须使用它的任何用例.
Gil*_*il' 151
由于历史原因,它更多.内置的冒号:
完全等同于true
.true
当返回值很重要时使用它是传统的,例如在无限循环中:
while true; do
echo 'Going on forever'
done
Run Code Online (Sandbox Code Playgroud)
:
当shell语法需要命令但你无所事事时,它是传统的.
while keep_waiting; do
: # busy-wait
done
Run Code Online (Sandbox Code Playgroud)
该:
内置日期一路回汤普森壳,它是目前在Unix的V6发动机.:
是Thompson shell goto
声明的标签指示器.标签可以是任何文本,因此:
作为评论指标加倍(如果没有goto comment
,则: comment
实际上是评论).在Bourne shell中没有goto
但保留:
.
使用一个常见的成语:
是: ${var=VALUE}
,这台var
到VALUE
,如果它被清除的和做什么,如果var
已被设置.此构造仅以变量替换的形式存在,并且此变量替换需要以某种方式成为命令的一部分:no-op命令很好地服务.
另请参阅结肠构建的目的是什么?.
Ste*_*ler 16
当我注释掉所有代码时,我将它用于if语句.例如,你有一个测试:
if [ "$foo" != "1" ]
then
echo Success
fi
Run Code Online (Sandbox Code Playgroud)
但是你想暂时注释掉其中包含的所有内容:
if [ "$foo" != "1" ]
then
#echo Success
fi
Run Code Online (Sandbox Code Playgroud)
这导致bash发出语法错误:
Run Code Online (Sandbox Code Playgroud)line 4: syntax error near unexpected token `fi' line 4: `fi'
Bash不能有空块(WTF).所以你添加一个no-op:
if [ "$foo" != "1" ]
then
#echo Success
:
fi
Run Code Online (Sandbox Code Playgroud)
或者您可以使用no-op来注释掉这些行:
if [ "$foo" != "1" ]
then
: echo Success
fi
Run Code Online (Sandbox Code Playgroud)
如果你使用set- e
那么|| :
是一个很好的方法,如果发生故障(它显然使它通过)不退出脚本.
您将使用:
提供成功但不执行任何操作的命令.在此示例中,默认情况下,通过将其设置为"verbosity"命令:
.'v'选项将其打开.
#!/bin/sh
# example
verbosity=:
while getopts v OPT ; do
case $OPT in
v)
verbosity=/bin/realpath
;;
*)
exit "Cancelled"
;;
esac
done
# `$verbosity` always succeeds by default, but does nothing.
for i in * ; do
echo $i $($verbosity $i)
done
$ example
file
$ example -v
file /home/me/file
Run Code Online (Sandbox Code Playgroud)
alias
参数有时候,您想要一个不带任何参数的别名。您可以使用:
:
> alias alert_with_args='echo hello there'
> alias alert='echo hello there;:'
> alert_with_args blabla
hello there blabla
> alert blabla
hello there
Run Code Online (Sandbox Code Playgroud)
小智 5
一种用途是作为多行注释,或者通过将其与此处文件结合使用来注释掉部分代码以用于测试目的。
: << 'EOF'
This part of the script is a commented out
EOF
Run Code Online (Sandbox Code Playgroud)
不要忘记使用引号,EOF
这样里面的任何代码都不会被评估,比如$(foo)
. 它也可能会使用一个直观的终结名字一样值得NOTES
,SCRATCHPAD
或TODO
。
归档时间: |
|
查看次数: |
41577 次 |
最近记录: |