簡體   English   中英

我有一些代碼,其中的一個命令在終端上運行正常,但是從腳本運行時失敗

[英]I have a bit a of code that has one command that runs fine on the terminal but fails when running from a script

顯示腳本無法在最后一條命令上運行。

在終端中單獨運行時,該命令運行良好。 我嘗試將!...部分放入參數中,使用各種括號和換行符甚至使用完整路徑將其移動。 我對替代解決方案不感興趣-我對為什么該解決方案不能在腳本中特別工作感到興趣。

    #!/bin/bash
    mkdir alllogs
    for i in $(locate *.log); do cp $i alllogs/; done
    tar -zcvf alllogs/logs.gz alllogs/*
    rm -v alllogs/!('logs.gz') 

該腳本從Linux系統收集各種日志,並將其壓縮為單個文件,之后,它會擦除​​日志副本,而僅保留壓縮文件。 但是,刪除副本的命令在通過腳本運行時失敗,但在終端上可以正常工作。 給出的錯誤是:

    ./x.sh: line 7: syntax error near unexpected token `('
    ./x.sh: line 7: `rm -v alllogs/!('logs.gz')'

默認情況下不啟用該形式的模式匹配 您需要顯式設置extglob

shopt -s extglob

葡萄酒商所說的話,或取代

$(locate *.log) 

`locate *.log`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM