我在存储当前路径时遇到问题,并将其与输入的一个用户进行比较。 目前我有
cd $path
checkpath="$(pwd)"
if [ "$checkpath" == "$path" ]; then
chown -Rv $user *
并且用户输入$ path。脚本每次都在上述点失败,我无法弄清楚原因。我只需要一种方法来检查chown部分是否真的会在用户输入的路径下执行。
编辑: $ path包含用户输入的路径,而checkpath应包含pwd生成的输出。 所以简而言之,是的,我试图确保cd命令工作,并且chown将在被请求时使用写入的目录中执行。
答案 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
希望这能解决您的问题