gpt4 book ai didi

linux - MV : missing file operand while using mv in shell script but not in terminal

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:34 28 4
gpt4 key购买 nike

我正在尝试编写一个 shell 脚本,用户输入他们想要重命名为第一个变量的文件,然后输入他们想要的第二个变量的新名称。程序给出的唯一输出是 mv 缺少文件操作数。我已经碰壁了,目前没有什么可以尝试的。我尝试过使用文件的绝对路径,但这没有帮助。 Google 没有为我找到任何结果。

mv 在命令行中按预期工作,但一旦引入变量,程序就会停止运行。我已经尝试了所有可能的格式化输入的方法。

#!/bin/bash
echo -n "Original filename: "
read $input_filename
echo ""
echo -n "New filename: "
read $output_filename
echo ""
mv -v $input_filename $output_filename
if [ $? == 0 ]
then
echo "Task completed successfully"
else
echo "ERROR: File failed to be renamed. Exiting."
fi

输出及相关文件内容。

davevm@davevm-VirtualBox:~/lab10$ ls
helloworld lab10.sh
davevm@davevm-VirtualBox:~/lab10$ ./lab10.sh
Original filename: helloworld

New filename: copy1

mv: missing file operand
Try 'mv --help' for more information.
ERROR: File failed to be renamed. Exiting.

最佳答案

read 内置命令采用变量名称作为其参数。

使用读取文件名,而不是读取$filename

您还应该引用 mv 命令的参数:

mv -v "$input_filename" "$output_filename"

关于linux - MV : missing file operand while using mv in shell script but not in terminal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56998382/

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