linux - 跟踪移动的 shell 脚本

标签 linux bash shell unix

我希望有人能帮助我。在过去一个月左右的时间里,我一直在学习 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/

相关文章:

linux - 解析命令行上的命令输出以在 shell 脚本中使用

linux - 使用重命名命令批量重命名文件

Xcode Shell脚本调用错误: Command/bin/sh failed with exit code 127

linux - Bash 限制父脚本命令行参数传递给子脚本参数

linux - shell 脚本只查找最近 n 分钟内创建的所有文件夹的列表

Linux 服务器 | Tomcat 7.0 异常

linux - 如何在 Linux bash shell 脚本的 curl 命令中使用变量来发送带有文件的 post 请求?

linux - 如何从centos 7知道Apache是​​否安装

linux - 使用 BASH 脚本组合两行

Bash 脚本调用不同文件中的函数