Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
回显在shell脚本中运行的命令_Shell_Echo - Fatal编程技术网

回显在shell脚本中运行的命令

回显在shell脚本中运行的命令,shell,echo,Shell,Echo,是否可以回显shell脚本中正在运行的命令 (无需在sheabang中放置-X以打开debuggin模式。这不是调试过程的一部分) 谢谢 [编辑:更多详细信息] 假设我有这样一个脚本: #! /bin/sh clear cd ~/home/ 如何将执行的两个命令(cd和clear)打印到控制台 echo $0 这将回显命令行中的第一个单词。如果指定了相对路径,如“/bin/test”,则将显示整个路径,因此您可能需要: echo $(basename $0) 这将只回显“test”,而不

是否可以回显shell脚本中正在运行的命令

(无需在sheabang中放置-X以打开debuggin模式。这不是调试过程的一部分)

谢谢

[编辑:更多详细信息]

假设我有这样一个脚本:

#! /bin/sh

clear
cd ~/home/
如何将执行的两个命令(
cd
clear
)打印到控制台

echo $0
这将回显命令行中的第一个单词。如果指定了相对路径,如“/bin/test”,则将显示整个路径,因此您可能需要:

echo $(basename $0)
这将只回显“test”,而不是“/bin/test”


脚本在错误消息中使用$0是很常见的,而不是硬编码名称,因为程序可以重命名或从符号链接调用。

在我的
/bin/sh
(Debian Almquist Shell,dash)版本中,只有
-x
才能获得此行为。回响命令也是<代码> -X/COD>的唯一效果,所以我认为没有理由不使用它。

不。这正是-X/Cube >。如果你不想使用<代码> -X代码>,请考虑<代码> -V>代码>。@拉斯曼斯:我会把你的评论标记为答案:但我不知道怎么回答。@onetwother:把它作为一个答案贴出来。所有的信息都很好。但我认为O.P.希望回应脚本中cmd的运行。也就是说,
#/bin/bash;cmd1;echo-cmd2;cmd2;cmd3
。祝大家好运。嗯,我不是有意打印脚本的名称($0)。“echo$0”完全按照您的要求执行:回显正在运行的命令。你想要什么?回显将要运行的命令?回显在另一个进程中运行的命令?我想你不明白我的要求。(我已经用更多细节编辑了这个问题)我想我只需要更多的上下文来说明为什么要在调试上下文之外进行此操作。您可以创建一个命令和参数列表,并对其进行迭代。。。