IISomeOneII Asked: 2019-08-11 19:07:58 +0800 CST2019-08-11 19:07:58 +0800 CST 2019-08-11 19:07:58 +0800 CST 有没有办法输出当前正在运行的脚本的内容? 772 我正在尝试在我的脚本中使用一个命令来打印脚本本身的文字文本内容。 我尝试使用cat $(pwd)/$(basename "$0"),但不起作用。有人知道怎么做吗? shell-script 1 个回答 Voted Best Answer Sparhawk 2019-08-11T19:18:00+08:002019-08-11T19:18:00+08:00 让我们剖析一下这个命令: cat $(pwd)/$(basename "$0") $(pwd)展开到您所在的当前目录。 $(basename "$0")扩展为正在运行的脚本的文件名。 (此外,这些确实应该被引用,因为它们会因路径中带有空格等而失败。) 因此,如果您从同一目录运行脚本,那么这应该可以工作。 $ cd /tmp $ cat test.sh #!/bin/bash cat $(pwd)/$(basename "$0") $ ./test.sh #!/bin/bash cat $(pwd)/$(basename "$0") 但是,如果当前目录不是脚本所在的目录,则该命令会失败。 $ cd /home $ /tmp/test.sh cat: /home/test.sh: No such file or directory 您可以看到pwd命令中的 正在查找当前目录,而不是脚本所在的目录。 要解决,只需使用$0代替。 cat "$0" 这更简单,并且无论当前目录是什么都可以工作。
让我们剖析一下这个命令:
$(pwd)
展开到您所在的当前目录。$(basename "$0")
扩展为正在运行的脚本的文件名。因此,如果您从同一目录运行脚本,那么这应该可以工作。
但是,如果当前目录不是脚本所在的目录,则该命令会失败。
您可以看到
pwd
命令中的 正在查找当前目录,而不是脚本所在的目录。要解决,只需使用
$0
代替。这更简单,并且无论当前目录是什么都可以工作。