如何将命令输出转换为bash变量?

Cod*_*ris 4 bash

我不记得如何将执行结果捕获到bash脚本中的变量中.

基本上我有一个文件夹,里面装满了以下格式的备份文件: backup--my.hostname.com--1309565.tar.gz

我想循环遍历所有文件的列表并从文件名中拉出数字部分并对其做一些事情,所以我到目前为止这样做:

HOSTNAME=`hostname`
DIR="/backups/"
SUFFIX=".tar.gz"
PREFIX="backup--$HOSTNAME--"
TESTNUMBER=9999999999


#move into the backup dir
cd $DIR

#get a list of all backup files in there
FILES=$PREFIX*$SUFFIX

#Loop over the list
for F in $FILES
do
    #rip the number from the filename
    NUMBER=$F | sed s/$PREFIX//g | sed s/$SUFFIX//g

   #compare the number with another number

   if [ $NUMBER -lg $TESTNUMBER ]
      #do something

   fi

done
Run Code Online (Sandbox Code Playgroud)

我知道这个"$F | sed s/$PREFIX//g | sed s/$SUFFIX//g"部分正确地撕掉了这个数字(尽管我很欣赏可能有更好的方法),但我不记得如何将结果导入NUMBER,所以我可以在下面的if语句中重用它.

Paŭ*_*ann 5

使用$(...)语法(或``).

NUMBER=$( echo $F | sed s/$PREFIX//g | sed s/$SUFFIX//g )
Run Code Online (Sandbox Code Playgroud)

要么

NUMBER=` echo $F | sed s/$PREFIX//g | sed s/$SUFFIX//g `
Run Code Online (Sandbox Code Playgroud)

(我更喜欢第一个,因为当多个嵌套时更容易看到.)