gpt4 book ai didi

linux - 跟踪移动的 shell 脚本

转载 作者:太空狗 更新时间:2023-10-29 12:21:12 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com