如何检查将在哪个脚本中执行的目录

时间:2015-09-08 12:54:57

标签: bash pwd

我在存储当前路径时遇到问题,并将其与输入的一个用户进行比较。 目前我有

cd $path
checkpath="$(pwd)"
if [ "$checkpath" == "$path" ]; then
chown -Rv $user *

并且用户输入$ path。脚本每次都在上述点失败,我无法弄清楚原因。我只需要一种方法来检查chown部分是否真的会在用户输入的路径下执行。

编辑: $ path包含用户输入的路径,而checkpath应包含pwd生成的输出。 所以简而言之,是的,我试图确保cd命令工作,并且chown将在被请求时使用写入的目录中执行。

2 个答案:

答案 0 :(得分:1)

cd "$path" && chown -Rv "$user" *

如果chown命令成功,则仅执行cd。其他写同样事物的方式:

if cd "$path"; then
    chown -Rv "$user" *
fi

cd "$path" || exit
chown -Rv "$user" *

#!/bin/bash -e
cd "$path"
chown -Rv "$user" *

最后设置shell的-e标志,如果任何命令失败而不是继续,它会立即退出。

答案 1 :(得分:0)

您提供的$ path必须是完整路径,然后才会成功,而且您需要添加" fi"结束它看起来像:

./script.sh  /path_to_be_given user

cat script.sh

#!/bin/bash
path=$1
user=$2
cd $path
checkpath="$(pwd)"
echo "Parameter passed : path => $path ; user => $user ; checkpath =>    $checkpath "
if [ "$checkpath" == "$path" ]; then
    echo "chown -Rv $user *"
    chown -Rv $user *
    if [ $? -eq 0 ]; then
        echo "Ownership changed"
    fi 
fi

希望这能解决您的问题