我的作业是编写一个bash脚本,我在其中键入一个目录作为参数
比如./hw.sh /home/stuff
如果有任何目录,我必须像这样重命名它们
oldname (twitch
)新名称(twitchdir
)
如果目录中除了目录之外还有其他内容,则其名称应为:
oldname (things.txt
)新名称(things.txtetc
)
if [ -z $1 ] || ! [ -d $1 ]; then
echo "ERROR";
else
for row in $1/*;
do
if [ -d "$row" ]; then
mv "$row" "$rowdir"
else
mv "$row" "$rowetc"
fi
done
fi
如果我正在运行脚本,它告诉我我无法移动参数。 第一个if是分析参数是否是目录。
答案 0 :(得分:1)
导致错误的原因是"$rowdir"
和"$rowetc"
,因为您没有定义此类变量。因此,mv
命令实际上是试图将文件移动到未定义的变量值''
,这是失败的。因此,如果要将字符串附加到原始变量的值,请按以下步骤操作:
mv "$row" "$row"dir # for directories
mv "$row" "$row"etc # for others
或
mv "$row" "${row}dir" # for directories
mv "$row" "${row}etc" # for others
例如,在仅包含文件somefile
的工作目录中,请考虑
$ ls
somefile
$ row=somefile
$ mv "$row" "$rowetc"
mv: cannot move ‘somefile’ to ‘’: No such file or directory
$ mv "$row" "$row"etc
$ ls
somefileetc