如何检查脚本将执行的目录

How to check directory in which script will execute

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

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

并且 $path 由用户输入。脚本每次都在上述点失败,我不知道为什么。我只需要一种方法来检查 chown 部分是否真的会在用户输入的路径下执行。

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

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

如果 cd 命令成功,这只会执行 chown。其他写法:

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

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

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

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

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

./script.sh  /path_to_be_given user

cat script.sh

#!/bin/bash
path=
user=
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

希望这能解决您的问题