编写Unix shell脚本将名为common.txt的文件重命名为corporate.txt并检查是否重命名成功

编写Unix shell脚本将名为common.txt的文件重命名为corporate.txt并检查是否重命名成功
for f in $* 
do
mv common.txt corporate.txt
done

这样对吗??

答案1

如果您仅重命名单个文件,则无需循环所有位置参数,但是如果您确实循环所有位置参数,则应使用:

for f in "$@"; do

$@双引号允许您拥有包含空格的参数,而不会受到分词的影响,并且由于多种原因通常更健壮。


在您的脚本上,mv common.txt corporate.txt将根据参数重命名文件(假设该common.txt文件与脚本存在于同一目录中),但您不执行任何检查以确保它已重命名。就我个人而言,我会指出文件的完整路径,也许可以使用这是一些稍微不必要的添加的学习经验:

以及一些必要的补充:


使用所有这些,您可以创建一个如下脚本:

#!/bin/sh

file=/path/to/common.txt
path=$(dirname "$file")

if mv "$file" "${path}/corporate.txt"; then
    printf '%s\n' "${file}: renamed successfully" >&2
else
    printf '%s\n' "Failed to move: $file" >&2
fi

答案2

if mv common.txt corporate.txt; then echo "Success"

相关内容