当脚本中的命令也需要引号时,如何在 bash 脚本中使用引号?
How to use quotes in bash scrips when a command in the script needs quotes too?
我正在尝试制作一个脚本,该脚本将在同一目录中制作视频文件的备份文件,时间戳位于 tar 文件的末尾。该脚本仅用于演示目的,这就是我不打算将文件发送到其他目录的原因。以下是我的进展情况。
#!/bin/bash
cd Compression_Play/
echo Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz
tar -I "pixz -9t" -cvf Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz 2017-03-23_01-13-02.avi
我的问题是每当我尝试执行脚本时,它都会给我这个:
Me.29_Mar_2017-22:03:49.tar.xz
tar: -9: (PROGRAM ERROR) Option should have been recognized!?
Try 'tar --help' or 'tar --usage' for more information.
据我所知,问题出在我的 tar
命令中的引号上。有没有办法制作脚本以便我可以保留引号或替换它们?
鉴于您的目标是制作存档,大概保留所有者、文件模式、文件标志和 ACL(如果可用),那么这应该满足您的需要:
#!/bin/bash
archive_name="Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz"
$(cd Compression_Play/
tar -cvp 2017-03-23_01-13-02.avi |
pixz -9t > $archive_name
)
基于压缩包 GitHub page pixz
的 compress/decompress,您将需要反转管道以获取数据:
pixz -x9T < $archive_name | tar xvpf -
Greg 给出了很好的答案,而且效果很好。在摸索了几个小时并从我得到的帮助中拿走了东西之后,我还想出了另一种方法。
#!/bin/bash
cd /home/apowell/Compression_Play/Test_Backup
tar -I 'pixz -9t' -cvf Me.$(date +%d_%b_%Y-%H_%M_%S).tar.xz /home/apowell/Compression_Play/Linux_Programs
这个通过用普通的 xz 替换 pixz 来压缩更多一点。
#!/bin/bash
cd /home/apowell/Compression_Play/Test_Backup
tar -I 'xz -9ve -T8 -k' -cvf Me.$(date +%d_%b_%Y-%H_%M_%S).tar.xz /home/apowell/Compression_Play/Linux_Programs
我正在尝试制作一个脚本,该脚本将在同一目录中制作视频文件的备份文件,时间戳位于 tar 文件的末尾。该脚本仅用于演示目的,这就是我不打算将文件发送到其他目录的原因。以下是我的进展情况。
#!/bin/bash
cd Compression_Play/
echo Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz
tar -I "pixz -9t" -cvf Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz 2017-03-23_01-13-02.avi
我的问题是每当我尝试执行脚本时,它都会给我这个:
Me.29_Mar_2017-22:03:49.tar.xz
tar: -9: (PROGRAM ERROR) Option should have been recognized!?
Try 'tar --help' or 'tar --usage' for more information.
据我所知,问题出在我的 tar
命令中的引号上。有没有办法制作脚本以便我可以保留引号或替换它们?
鉴于您的目标是制作存档,大概保留所有者、文件模式、文件标志和 ACL(如果可用),那么这应该满足您的需要:
#!/bin/bash
archive_name="Me.$(date +%d_%b_%Y-%k:%M:%S).tar.xz"
$(cd Compression_Play/
tar -cvp 2017-03-23_01-13-02.avi |
pixz -9t > $archive_name
)
基于压缩包 GitHub page pixz
的 compress/decompress,您将需要反转管道以获取数据:
pixz -x9T < $archive_name | tar xvpf -
Greg 给出了很好的答案,而且效果很好。在摸索了几个小时并从我得到的帮助中拿走了东西之后,我还想出了另一种方法。
#!/bin/bash
cd /home/apowell/Compression_Play/Test_Backup
tar -I 'pixz -9t' -cvf Me.$(date +%d_%b_%Y-%H_%M_%S).tar.xz /home/apowell/Compression_Play/Linux_Programs
这个通过用普通的 xz 替换 pixz 来压缩更多一点。
#!/bin/bash
cd /home/apowell/Compression_Play/Test_Backup
tar -I 'xz -9ve -T8 -k' -cvf Me.$(date +%d_%b_%Y-%H_%M_%S).tar.xz /home/apowell/Compression_Play/Linux_Programs