我像这样用 nano 写了一个简单的脚本:
#!/bin/bash
tar --create --verbose --bzip2 --file=myfile.tbz ~/test
效果很好。
但后来我使用变量编写了相同的脚本,现在它给了我一个错误:
#!/bin/bash
echo "Backup which directory?"
read $dir
tar --create --verbose --bzip2 --file=myfile.tbz $dir
所以我在出现提示时输入 ~/test,这次我得到:
tar: Cowardly refusing to create an empty archive.
我做错了什么?
您正在尝试使用错误的语法创建变量。读取提示不会将 $dir 作为变量,在读取命令中仅使用 dir 而不是 $dir。以下是当前语法。
#!/bin/bash
echo "Backup which directory?"
read dir
tar --create --verbose --bzip2 --file=myfile.tbz $dir
根据 read(1p) 的手册页,如果没有为
read
命令提供操作数/名称,它将值存储在 REPLY
变量中。
NAME
可以是预先声明的变量,也可以直接提供给 read
命令而无需事先声明。
因此,您可以将 shell 脚本修改为:
#!/bin/bash
echo "Backup which directory?"
read dir
tar --create --verbose --bzip2 --file=myfile.tbz $dir
或者你也可以这样说,通过声明一个名为
dir
的变量:
#!/bin/bash
dir=""
echo "Backup which directory?"
read dir
tar --create --verbose --bzip2 --file=myfile.tbz $dir