ter*_*don 398
没有必要这样做,它已经在一个变量中:
$ echo $PWD
/home/terdon
Run Code Online (Sandbox Code Playgroud)
该PWD变量由 POSIX 定义,适用于所有符合 POSIX 的 shell:
残疾人士
由 shell 和 cd 实用程序设置。在 shell 中,值应从环境中初始化,如下所示。如果在执行时向环境中的shell传递了PWD的值,则该值为当前工作目录的绝对路径名,包括终止空字节在内不超过{PATH_MAX}个字节,并且该值不包含点或点-点的任何组件,则外壳应将 PWD 设置为来自环境的值。否则,如果执行时环境中的shell传递了一个PWD的值,该值是当前工作目录的绝对路径名,并且该值不包含点或点-点的任何组件,则它未指定 shell 是将 PWD 设置为来自环境的值,还是将 PWD 设置为由 pwd -P 输出的路径名。否则,sh 实用程序会将 PWD 设置为由 pwd -P 输出的路径名。在 PWD 设置为来自环境的值的情况下,该值可以包含引用符号链接类型文件的组件。在 PWD 设置为 pwd -P 输出的路径名的情况下,如果对当前工作目录或该目录的任何父目录没有足够的权限来确定该路径名是什么,则 PWD 的值为未指定。可以忽略对该变量的赋值。如果应用程序设置或取消设置 PWD 的值,则未指定 cd 和 pwd 实用程序的行为。在 PWD 设置为 pwd -P 输出的路径名的情况下,如果对当前工作目录或该目录的任何父目录没有足够的权限来确定该路径名是什么,则 PWD 的值为未指定。可以忽略对该变量的赋值。如果应用程序设置或取消设置 PWD 的值,则未指定 cd 和 pwd 实用程序的行为。在 PWD 设置为 pwd -P 输出的路径名的情况下,如果对当前工作目录或该目录的任何父目录没有足够的权限来确定该路径名是什么,则 PWD 的值为未指定。可以忽略对该变量的赋值。如果应用程序设置或取消设置 PWD 的值,则未指定 cd 和 pwd 实用程序的行为。
对于更一般的答案,将命令的输出保存在变量中的方法是将命令括在$()或` `(反引号)中:
var=$(command)
Run Code Online (Sandbox Code Playgroud)
或者
var=`command`
Run Code Online (Sandbox Code Playgroud)
在这两者中,$()首选是因为它更容易构建复杂的命令,例如:
command0 $(command1 $(command2 $(command3)))
Run Code Online (Sandbox Code Playgroud)
Gov*_*las 39
dir=$(pwd)
与反引号方法相比,这更便携且更受欢迎。
使用$()允许您嵌套命令
例如: mech_pwd=$(pwd; echo in $(hostname))
您需要使用命令替换将pwd命令的输出保存到变量中。命令替换可以使用反引号或美元字符。像这样:
$ mkdir "/tmp/new dir"
$ cd "/tmp/new dir"
$ CWD="$(pwd)"
$ echo $CWD
/tmp/new dir
$ cd ~
$ echo $CWD
/tmp/new dir
$ pwd
/home/ja
Run Code Online (Sandbox Code Playgroud)