执行csh脚本时如何显示行号?
How to show line number when executing csh script?
我正在使用 csh 脚本,我想在调试模式下执行 csh 脚本时查看行号。
我做的像
csh -x script_name
除此之外,我还需要做什么才能在调试模式下查看行号?
没有执行此操作的内置功能。我能想到的唯一方法是(ab)使用 postcmd
特殊别名。此别名将在每个命令后 运行:
set _lineno = 0
alias postcmd '@ _lineno++ && echo -n $_lineno\ '
echo a
echo b
echo c && echo d
输出:
% csh test.csh
1 2 a
3 b
4 c
d
不幸的是,这会使 -x
输出混乱:
% csh -x test.csh
set _lineno = 0
alias postcmd @ _lineno++ && echo -n $_lineno\
@ _lineno++
echo -n 1
1 @ _lineno++
echo -n 2
2 echo a
a
@ _lineno++
echo -n 3
3 echo b
b
@ _lineno++
echo -n 4
4 echo c
c
echo d
d
我们可以使用 grep
:
进行筛选
% csh -x test.tcsh | & grep -Ev '^(@ _lineno|echo -n [[:digit:]]+)
set _lineno = 0
alias postcmd @ _lineno++ && echo -n $_lineno\
1 @ _lineno++
2 echo a
a
3 echo b
b
4 echo c
c
echo d
d
所有这些都不够完美,甚至可能无法很好地处理大型脚本...
因为你在过去几天问了一些 csh
相关问题:
虽然 tcsh
可以很好地作为交互式 shell,但 tcsh
或 csh
通常不太适合脚本任务。有很多东西缺失、不完整,或者只是以 "strange" 的方式表现。它甚至 比使用 POSIX 的正常 shell 脚本更难看(这说明了很多)。
除非你有充分的理由不这样做(例如维护现有脚本),否则你可能应该暂时放弃 csh
,转而使用 "real" 编程语言(Python、Ruby、Perl 等等),或使用 /bin/sh
、bash
或 zsh
.
我正在使用 csh 脚本,我想在调试模式下执行 csh 脚本时查看行号。 我做的像
csh -x script_name
除此之外,我还需要做什么才能在调试模式下查看行号?
没有执行此操作的内置功能。我能想到的唯一方法是(ab)使用 postcmd
特殊别名。此别名将在每个命令后 运行:
set _lineno = 0
alias postcmd '@ _lineno++ && echo -n $_lineno\ '
echo a
echo b
echo c && echo d
输出:
% csh test.csh
1 2 a
3 b
4 c
d
不幸的是,这会使 -x
输出混乱:
% csh -x test.csh
set _lineno = 0
alias postcmd @ _lineno++ && echo -n $_lineno\
@ _lineno++
echo -n 1
1 @ _lineno++
echo -n 2
2 echo a
a
@ _lineno++
echo -n 3
3 echo b
b
@ _lineno++
echo -n 4
4 echo c
c
echo d
d
我们可以使用 grep
:
% csh -x test.tcsh | & grep -Ev '^(@ _lineno|echo -n [[:digit:]]+)
set _lineno = 0
alias postcmd @ _lineno++ && echo -n $_lineno\
1 @ _lineno++
2 echo a
a
3 echo b
b
4 echo c
c
echo d
d
所有这些都不够完美,甚至可能无法很好地处理大型脚本...
因为你在过去几天问了一些 csh
相关问题:
虽然 tcsh
可以很好地作为交互式 shell,但 tcsh
或 csh
通常不太适合脚本任务。有很多东西缺失、不完整,或者只是以 "strange" 的方式表现。它甚至 比使用 POSIX 的正常 shell 脚本更难看(这说明了很多)。
除非你有充分的理由不这样做(例如维护现有脚本),否则你可能应该暂时放弃 csh
,转而使用 "real" 编程语言(Python、Ruby、Perl 等等),或使用 /bin/sh
、bash
或 zsh
.