我正在接受用户输入并尝试移动用户指定的文件夹中的特定文件(该文件夹事先不存在)。我为此编写了一个脚本,但它不起作用。
read month
mv file210.txt /Users/PrashastKumar/Documents/latestFiles/$month/
执行此操作后,我收到如下错误
mv: rename file210.txt to /Users/PrashastKumar/Documents/latestFiles/Dec/: No such file or directory
答案1
由于该文件夹不存在,您必须创建它:
#!/bin/sh
read month
folder="/Users/PrashastKumar/Documents/latestFiles/$month"
mkdir -p "$folder"
mv file210.txt "$folder"
该脚本将创建文件夹mkdir -p
,如果该文件夹已存在,则使用该文件夹不会失败,并将根据需要创建任何中间文件夹。
然后文件被移动。
在创建新文件夹之前通过确认展开脚本:
#!/bin/sh
read month
folder="/Users/PrashastKumar/Documents/latestFiles/$month"
if [ ! -d "$folder" ]; then
printf 'Folder "%s" does not exist. Create it [y/n]: ' "$folder" >&2
read
case "$REPLY" in
[yY]*) mkdir -p "$folder" ;;
*) exit 1
esac
fi
mv file210.txt "$folder"