命令行在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使用
$(…)
而不是`…`
进行命令替换,因为使用这种语法嵌套命令替换变得更容易。这是否回答了您的问题?