Shell 在ksh中有条件地排除echo语句

Shell 在ksh中有条件地排除echo语句,shell,scripting,echo,ksh,Shell,Scripting,Echo,Ksh,我希望在KornShell(ksh)脚本中使用详细/非详细模式 在verbose中,我需要使用 echo blah blah blah 但在非详细的情况下,我不想排除那些echo语句 现在我猜有一个更好的/优雅的方法来实现这一点,而不是使用一个冗长的全局状态并进行 if [[ $verbose eq 1 ]] ; then echo blah blah blah fi 我是ksh的新手,不知道所有的窍门。 有人能建议一下可以做什么吗?哎呀,你说的是“ksh”,但这个概念非常相似 您可

我希望在KornShell(ksh)脚本中使用详细/非详细模式

在verbose中,我需要使用

echo blah blah blah
但在非详细的情况下,我不想排除那些echo语句 现在我猜有一个更好的/优雅的方法来实现这一点,而不是使用一个冗长的全局状态并进行

if [[ $verbose eq 1 ]] ; then
    echo blah blah blah
fi
我是ksh的新手,不知道所有的窍门。 有人能建议一下可以做什么吗?

哎呀,你说的是“ksh”,但这个概念非常相似

您可以这样做:

export DEBUG=1
[ $DEBUG -eq 1 ] && echo hi
hi

export DEBUG=0
[ $DEBUG -eq 1 ] && echo hi
bash -xv yourscript
或者,您可以使用“-xv”标志执行脚本,或者在开始处更改shebang行

#!/bin/bash -xv
Line 1 of your script...
Line 2 of your script
或者通过如下方式执行脚本:

export DEBUG=1
[ $DEBUG -eq 1 ] && echo hi
hi

export DEBUG=0
[ $DEBUG -eq 1 ] && echo hi
bash -xv yourscript
或者,您可以在登录/配置文件脚本中定义一个debug()函数,并在其中进行签入

哎呀,你说的是“ksh”,但这个概念非常相似

您可以这样做:

export DEBUG=1
[ $DEBUG -eq 1 ] && echo hi
hi

export DEBUG=0
[ $DEBUG -eq 1 ] && echo hi
bash -xv yourscript
或者,您可以使用“-xv”标志执行脚本,或者在开始处更改shebang行

#!/bin/bash -xv
Line 1 of your script...
Line 2 of your script
或者通过如下方式执行脚本:

export DEBUG=1
[ $DEBUG -eq 1 ] && echo hi
hi

export DEBUG=0
[ $DEBUG -eq 1 ] && echo hi
bash -xv yourscript

或者,您可以在登录/配置文件脚本中定义一个debug()函数,并在其中进行签入

这只适用于
ksh
bash
或任何
POSIX
或bourne shell衍生品:

$ debug=true
$ $debug && echo blah blah blah
blah blah blah
$ debug=false
$ $debug && echo blah blah blah
$

这只适用于
ksh
bash
或任何
POSIX
或伯恩壳牌衍生品:

$ debug=true
$ $debug && echo blah blah blah
blah blah blah
$ debug=false
$ $debug && echo blah blah blah
$
无需进一步ado(在ksh和bash中有效,而不是POSIX sh中有效):

无需进一步ado(在ksh和bash中有效,而不是POSIX sh中有效):


不需要环境变量,它将在没有“
导出
”的情况下工作。不需要环境变量,它将在没有“
导出
”的情况下工作