我使用以下命令获取输出(最新文件中标记的数字(:
ls -lrt | tail -n1 | awk -F'.' '{print $4}' | grep -o '[0-9]+'
但是当我在 shell 脚本中使用相同的命令并在变量c
中获取结果时,我没有得到正确的结果。
我的脚本:
#! /bin/sh
c=ls -lrt | tail -n1 | awk -F'.' '{print $4}' | grep -o '[0-9]+'
echo $c
执行时显示的错误是:
-lrt: command not found
你正在做什么:尝试使用每个命令变量运行命令。
VAR=foo ./somecommand.sh
将在VAR
设置为foo
的情况下运行./somecommand.sh
。但不会为以后执行的命令设置VAR
。
您的示例设置c=ls
并尝试运行-lrt
- 显然这既没有找到也没有意图。
我假设您想将输出保存到变量c
.
你会使用
c=`ls -lrt | tail -n1 | awk -F'.' '{print $4}' | grep -o '[0-9]+'`
echo "$c"
现代 shell 使用$(...)
而不是`...`
进行命令替换,因为使用此语法可以更轻松地嵌套命令替换。