【问题标题】:Issues in getting $PWD in shell script在 shell 脚本中获取 $PWD 的问题
【发布时间】:2014-04-19 06:04:28
【问题描述】:

我正在从我的 linux 应用程序调用系统调用。

/* 一些文件.c */ file.c 嵌入在名为 file.elf 的可执行文件中。此 file.elf 存在于目录中 /home/ubuntu/file.elf 当我执行 file.elf 时, echo $BB_PATH 打印可执行目录路径。我期望目录路径是放置脚本的路径。 IE /home/ubuntu/Desktop/BIN/BB/Chk_File.sh

如何做到这一点?

if(!(system("ls /home/ubuntu/Desktop/BIN/BB")))
    {
    /* Test Path : remove after testing */
    dw_flag = system("/home/ubuntu/Desktop/BIN/BB/Chk_File.sh");//Call to execute Script
    dw_flag = WEXITSTATUS(dw_flag); 
    }

这依次调用文件 CHK_File.sh

ret_val=0

BB_PATH=$(pwd)

echo $BB_PATH

if [ ! -f ACTION_TAG.txt ]
then
  echo " ACTION_TAG NOT PRESENT "
else

ret_val=1       
fi

echo $ret_val
exit $ret_val

【问题讨论】:

标签: bash shell


【解决方案1】:

您可以使用dirname获取shell脚本的目录。

echo `dirname $0`

【讨论】:

  • 你必须引用$0,你也应该使用$()而不是反引号。这是诀窍:a='one/two three/four' && dirname $a 打印两行:onethree,而 a='one/two three/four' && dirname "$a" 正确打印 one/two three
【解决方案2】:

在脚本中添加以下行对我有帮助

if [ -L $0 ] ; then
    DIR=$(dirname $(readlink -f $0)) ;
else
    DIR=$(dirname $0) ;
fi ;


echo $DIR

现在我们不用担心脚本是从哪个目录调用的!!太好了!!

【讨论】:

  • 没有理由检查它是否是符号链接,"$(dirname "$(readlink -f $0)")" 也适用于常规文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 2013-10-27
  • 2021-06-03
  • 2018-03-18
  • 2011-05-07
相关资源
最近更新 更多