我希望有人能帮助我。在过去一个月左右的时间里,我一直在学习 Bash...我有一个程序(一个简单的语言学习程序),我希望能够通过脚本安装和运行它。
我有一个脚本可以创建一个新文件夹并将其自身移动到其中。我现在这样做的方式如下,尽管我在稍后使用的数组方面遇到了问题。我想知道是否有一种更简洁的方法来获取文件名的新路径。任何帮助或见解将不胜感激。
#!/bin/bash
echo "# path to me ---------------> ${0} "
echo "# parent path --------------> ${0%/*} "
echo "# my name ------------------> ${0##*/} "
if [[ ! -d ${0%/*}/SomeNewFolder ]] && [[ ! -d ${0%/*}/../SomeNewFolder ]]
then
mkdir ${0%/*}/SomeNewFolder
mv ${0} ${0%/*}/SomeNewFolder/${0##*/}
fi
echo ${0%/*}
newpath=$(echo "${0%/*}/SomeNewFolder")
echo $newpath
祝你一切顺利
退出
最佳答案
为清楚起见,我可能会为您的常用值声明命名变量,而不是不断重复使用 ${0} 数组。引用变量和字符串也是一种很好的做法。
我看到的唯一主要问题是运行 ./script.sh 会使 $0 等于文件名,所以在这种情况下我在开头添加“./”。
#!/bin/bash -u
ME="${0}"
if [[ ! "$ME" =~ /^\// ]]; then
ME="./$ME"
fi
PARENT="${ME%/*}"
FILENAME="${ME##*/}"
FOLDER="SomeNewFolder"
NEW="$PARENT/$FOLDER"
if [[ ! -d "$NEW" ]] && [[ "${PARENT%/*}" != "$FOLDER" ]]; then
mkdir "$NEW"
mv "$ME" "$NEW"
fi
echo "$PARENT"
echo "$NEW"
关于linux - 跟踪移动的 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7587487/