命令行工作,但在 shell 脚本中不起作用



我使用以下命令获取输出(最新文件中标记的数字(:

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 使用$(...)而不是`...`进行命令替换,因为使用此语法可以更轻松地嵌套命令替换。

最新更新