不能在脚本中通过 tar 命令使用变量

问题描述 投票:0回答:2

我像这样用 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.

我做错了什么?

linux tar
2个回答
1
投票

您正在尝试使用错误的语法创建变量。读取提示不会将 $dir 作为变量,在读取命令中仅使用 dir 而不是 $dir。以下是当前语法。

#!/bin/bash
echo "Backup which directory?"
read dir
tar --create --verbose --bzip2 --file=myfile.tbz $dir

0
投票

根据 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
© www.soinside.com 2019 - 2024. All rights reserved.