如何检查脚本将执行的目录
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
希望这能解决您的问题
我在存储当前路径并将其与输入的用户进行比较时遇到问题。 目前我有
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
希望这能解决您的问题