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

命令行在shell脚本中工作但不工作,shell,command-line,Shell,Command Line,我使用以下命令获取输出(最新文件中标记的编号): 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 fou

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

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

正在执行的操作:尝试使用per命令变量运行命令

VAR=foo./somecommand.sh

将运行
/somecommand.sh
,并将
VAR
设置为
foo
。但是不会为以后执行的命令设置
VAR

您的示例设置了
c=ls
,并尝试运行
-lrt
——显然这既没有找到也没有预期效果

我假设您希望将输出保存到变量
c

你会用

c=`ls -lrt | tail -n1 | awk -F'.' '{print $4}' | grep -o '[0-9]+'`
echo "$c"

现代Shell使用
$(…)
而不是
`…`
进行命令替换,因为使用这种语法嵌套命令替换变得更容易。

这是否回答了您的问题?